一、基础环境
- 首先在pom.xml中导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Spring Data Redis中提供了一个高度封装的类:RedisTemplate,针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下(其实就是对应五大常用数据类型):
- ValueOperations:简单K-V操作 -String类型
- SetOperations:set类型数据操作 -无序集合set类型
- ZSetOperations:zset类型数据操作 -有序集合set类型
- HashOperations:针对map类型的数据操作 -哈希类型
- ListOperations:针对list类型的数据操作 -list类型
- 配置application.yml文件
spring:
application:
name: springdataredis_demo
#Redis相关配置
redis:
host: localhost
port: 6379
#password: 123456
database: 0 #操作的是0号数据库
jedis:
#Redis连接池配置
pool:
max-active: 8 #最大连接数
max-wait: 1ms #连接池最大阻塞等待时间
max-idle: 4 #连接池中的最大空闲连接
min-idle: 0 #连接池中的最小空闲连接
这里的database默认操作0号数据库,Redis为我们默认提供了16个数据库。具体看配置文件redis.windows.conf
二、序列设置及操作常用五大类类型
1. 操作String类型数据
redisTemplate由Spring管理且在我们没有配置该类可以被直接注入。
redisTemplate为我们提供了opsForxxx方法 对应五种常用类型,直接set即可
如 HashOperations hashOperations = redisTemplate.opsForHash();
redisTemplate.opsForHash()得到的类型为HashOperations
其他的opsForxxx也同样对应五大常用数据类型。
@Test
public void testString(){
redisTemplate.opsForValue().set("city","beijing");
}
在直接set之后,我们发现Redis数据库中并不存在city 而是:
这里是由于redisTemplate在往Redis数据库存入的时候进行了序列化,这里需要我们重新设置序列化器保证key不被序列化
/**
* Redis配置类
*/
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>()