SpringBoot整合Redis实现缓存
Redis
redis
简单来说就是一款基于内存的以键值对方式存储数据的非关系型数据库。
优点非常明显,由于存储在内存中,所以读取非常快。这种速度是mysql
等数据库完全不能比拟的,所以我们常用redis
作为缓存以减少对本地数据库的查询。
redis
可以作为系统进程间的资源共享,例如使用redis
实现spring session
共享等等
关于
redis
的安装与操作这里就不多说了,百度有非常详细的教程,个人还是建议将redis
部署在linux
虚拟机或者服务器上。
缓存
缓存的作用就是将数据存储在内存中,之后查询同样的数据便可以直接从内存中获取而不是再次执行方法。这样毫无疑问可以省下很多时间。
例如我有一个方法getById(Integer id)
,通过id
到数据库中查询并获取实体类。我第一次查询的时候并没有任何缓存,所以执行该方法,通过mybatis
到数据库中获取数据。但是当第二次查询的时候,如果还是查之前传入的id
,那么程序便发现缓存中有这个结果,便直接到内存中获取结果,而不是执行方法。
SpringBoot中的应用
Mysql准备
因为只是简单demo
,所以这里还是继续使用之前的Customer
表
CREATE TABLE `customer` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(64) DEFAULT NULL COMMENT '姓名',
`age` smallint DEFAULT NULL COMMENT '年龄',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立时间',
`modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
建立连接
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?characterEncoding=utf-8&serverTimezone=GMT%2B8
username: root
password: 1234
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
log.impl: org.apache.ibatis.logging.stdout.StdOutImpl
type-aliases-package: com.cwh.springboot.redis.model.entity
mapper-locations: classpath:mapper/*Mapper.xml
Customer
@Data
@TableName("customer")
public class Customer {
// 设置主键,主键生成策略
// AUTO为数据库自增
@TableId(type = IdType.AUTO)
private Long id;
// @TableField(value="",exist=true)
// 映射非主键字段 value字段名 exist 标明该属性是否在数据库中
@TableField(value = "name")
private String name;
private Integer age;
@TableField(value = "create_time",fill = FieldFill.INSERT)
// fill 自动填充策略
// INSERT 插入式填充,UPDATE 更新时填充,INSERT_UPDATE插入更新时填充
private Date createTime;
@TableField(value = "modify_time",fill = FieldFill.INSERT_UPDATE)
private Date modifyTime;
}
Redis的简单使用
首先我们看下springboot
中对于redis
的配置
pom.xml
<!-- redis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
application.yml
spring:
redis:
# 数据库索引,默认为0
database: 0
# redis host ip
host: 192.168.56.129
# redis 连接端口
port: 6379
# 服务器连接密码(默认为空)
password