SpringDataRedis
1.1 引入依赖
<!--redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--common-pool连接池-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
1.2 编写配置文件
spring:
redis:
host: 192.168.88.130 # 修改成自己的redis服务器地址
port: 6379
password: 123456
lettuce:
pool: # 必须要配置才会生效
max-active: 8 # 最大连接数量
max-idle: 8 # 最大空闲数量
min-idle: 0 # 最小空闲数量
max-wait: 1000ms # 连接等待时间
1.3 注入RedisTemplate
@Autowired
private RedisTemplate redisTemplate;
1.4 编写测试代码
@Test
void testString() {
// 1. 写入一条String数据
redisTemplate.opsForValue().set("name","lbwnb");
// 2. 获取String数据
Object name = redisTemplate.opsForValue().get("name");
System.out.println("name="+name);
}
2. SpringDataRedis序列化器设置
默认的RedisTemplate
的序列化采用是JDK
内置的,会有一些问题。所以我们需要手动的去设置序列化工具
2.1 配置序列化工具
@Configuration
public class RedisTemplateConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
// 1. 创建redisTemplate
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
// 2. 连接工厂
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 3. 创建Jackson转换器
GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
// 4. key设置字符串类型的转换器
redisTemplate.setKeySerializer(RedisSerializer.string());
redisTemplate.setHashKeySerializer(RedisSerializer.string());
// 5. value设置Jackson的类型转换器
redisTemplate.setValueSerializer(jsonRedisSerializer);
redisTemplate.setHashValueSerializer(jsonRedisSerializer);
return redisTemplate;
}
}
2.2 使用redisTemplate
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Test
void testString() {
// 1. 写入一条String数据
redisTemplate.opsForValue().set("name","lbwnb");
// 2. 获取String数据
Object name = redisTemplate.opsForValue().get("name");
System.out.println("name="+name);
}
2.3 存入对象
@Test
void testUser() {
User user = new User("lbw",16);
// 1. 写入一条String数据
redisTemplate.opsForValue().set("stu:1",user);
// 2. 获取String数据
User u = (User) redisTemplate.opsForValue().get("stu:1");
System.out.println(u);
}
2.4 StringRedisTemplate
使用json
序列化器的时候会有一个缺点,那就是会把对象的类也存入redis
当中。所以我们可以先手动序列化,再采用String
序列化器将其序列化到redis
当中。但是这样的话,需要我们手动配置,不过Spring
已经帮我们配置了一个
@Autowired
private StringRedisTemplate redisTemplate;
@Test
void testUser() {
User user = new User("lbw666",16);
String toJSON = JSON.toJSONString(user);
// 1. 写入一条String数据
redisTemplate.opsForValue().set("stu:2",toJSON);
// 2. 获取String数据
String s = redisTemplate.opsForValue().get("stu:2");
User u = JSON.parseObject(s, User.class);
System.out.println(u);
}
3参考
https://www.bilibili.com/video/BV1cr4y1671t