StringRedisTemplate与RedisTemplate 区别
StringRedisTemplate与RedisTemplate
-
两者的关系是StringRedisTemplate继承RedisTemplate。
-
两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。
-
SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略。
StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。
RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。
Redis的String数据结构 (推荐使用StringRedisTemplate)
注意:如果使用RedisTemplate需要更改序列化方式
@Configuration
public class RedisConfig {
@Autowired
private RedisTemplate redisTemplate;
@Bean
public RedisTemplate<Object, Object> stringSerializerRedisTemplate() {
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class);
redisTemplate.setValueSerializer(fastJsonRedisSerializer);
redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);
return redisTemplate;
}
}
操作demo
public List<EmsAddr> getList() { //查询缓存 List<EmsAddr> list= (List<EmsAddr>)redisTemplate.opsForValue().get("str_List"); if(null == list) { //缓存为空,查询一遍数据库 list = emsAddrMapper.getList(); //把数据库查询出来数据,放入Redis中 redisTemplate.opsForValue().set("str_List",list); } redisTemplate.opsForList().leftPushAll("list_list", list); System.out.println(redisTemplate.opsForList().size("list_list")); System.out.println(redisTemplate.opsForList().range("list_list",0,-1)); return list; }
https://blog.csdn.net/chen15369337607/article/details/104058934
希望写博是我人生坚持在做的事情之一。
浙公网安备 33010602011771号