原因: RedisTemplate 默认使用:JdkSerializationRedisSerializer 序列化。
解决方案:
@Autowired
RedisTemplate redisTemplate;
修改为:
@Autowired
StringRedisTemplate stringRedisTemplate;
拓展:
1.SpringBoot 项目使用 Redis:
①`pom.xml` 添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
②配置`application.properties` :
#Redis服务器地址
spring.redis.host=127.0.0.1
#Redis服务器连接端口
spring.redis.port=6379
#Redis服务器连接密码(默认为空)
spring.redis.password=123456
spring.redis.database=0
#连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
#连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
#连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=3
#连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1ms
#连接超时时间(毫秒)
spring.redis.timeout=30000
③注入,使用:
@Autowired
StringRedisTemplate stringRedisTemplate;
stringRedisTemplate.opsForValue().set("key", "value");
String value = stringRedisTemplate.opsForValue().get("key");
System.out.println(value);
stringRedisTemplate.opsForHash().entries("hash")
2.SpringBoot 项目使用 Redis,切换 Database 方法:
LettuceConnectionFactory connectionFactory = (LettuceConnectionFactory) stringRedisTemplate.getConnectionFactory();
if (connectionFactory != null) {
connectionFactory.setDatabase(16);
stringRedisTemplate.setConnectionFactory(connectionFactory);
//connectionFactory.resetConnection(); //很多资料中执行 resetConnection() 方法,不起作用
connectionFactory.afterPropertiesSet(); //使用 afterPropertiesSet() 能正常切换
}
注:SpringBoot 版本:2.2.8.RELEASE。
网友评论