1.当我们的springboot集成了redis,然后通过springboot程序往redis设置信息,做缓存使用,如果没有使用序列化的时候,也是可以set进去的,不过是这样子的
库里的值:
value信息:
看到的都是这样子的,为什么是这样子呢?大白话说,就是你放在程序里的话,翻译完,咱们看不懂了,作为程序员,我们叫做这个值没有做系列化设置,导致编译完,计算机以自己的形式保存,取值是能取出来的,但是看着就是不爽,那么下面我来做序列号设置,以及一些缓存的设置,配置信息如下:
@Configuration
public class RedisCacheConfig {
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);
return redisCacheManager;
}
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
RedisTemplate redisTemplate = new RedisTemplate();
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setConnectionFactory(factory);
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(stringSerializer);
return redisTemplate;
}
}
这时候发现报错:
点开一看,什么鬼,我之前都是这样配置的,怎么不行呢?一看源码,哦,原来没有这个方法了,仔细想想,是因为这个方法适合springboot的1.X版本,而在2.X版本这个方法取消了,那么就用这个方法了,结果如下:
@Configuration
public class RedisCacheConfig {
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
// 设置缓存有效期一小时
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(1));
return RedisCacheManager.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory)).cacheDefaults(redisCacheConfiguration).build();
}
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
RedisTemplate redisTemplate = new RedisTemplate();
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setConnectionFactory(factory);
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(stringSerializer);
return redisTemplate;
}
}
这样配置就好了,重新试试,结果如下:
这样看着舒服多了,好了就是简单的配置,有问题多多沟通,谢谢大家!