一.RedisTemplate和StringRedisTemplate的区别:
- 两者的关系是
StringRedisTemplate
继承RedisTemplate
。 - 两者的数据是不共通的;也就是说
StringRedisTemplate
只能管理StringRedisTemplate
里面的数据,RedisTemplate
只能管理RedisTemplate
中的数据。 SDR(Spring Data Redis)
默认采用的序列化策略有两种,一种是String
的序列化策略,一种是JDK
的序列化策略。StringRedisTemplate
默认采用的是String
的序列化策略,保存的key
和value
都是采用此策略序列化保存的。RedisTemplate
默认采用的是JDK
的序列化策略,保存的key
和value
都是采用此策略序列化保存的。
二. RedisTemplate和StringRedisTemplate的使用:
- 当你的
redis
数据库里面本来存的是字符串数据或者你要存取的数据就是字符串类型数据的时候,那么使用StringRedisTemplate
是最好的选择。 - 但是如果你的数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,希望直接从
Redis
里面取出一个对象,那么使用RedisTemplate
则是最佳的选择。
User user = new User();
user.setId(15);
user.setUsername("呵呵");
user.setPassword("123476");
user.setAddress("北极");
user.setEmail("123@123.com");
user.setCreateTime(new DateTime());
user.setUpdateTime(new DateTime());
redisTemplate.opsForValue().set("user1", user);
String jsonStr = JSONUtil.toJsonStr(user);
// log.info(jsonStr);
// User bean = JSONUtil.toBean(jsonStr, User.class);
// log.info(bean);
template.opsForValue().set("user2", jsonStr);
log.info("redisTemplate:->"+redisTemplate.opsForValue().get("user1"));
log.info(template.opsForValue().get("user2"));
输出结果:
其中JSONUtil使用的是github工具包Hutool,API网址
github官方地址是一个很好用的工具
日志打印使用的是lombok,在类上添加注解@Log4j2即可
推荐一个写的很详细的RedisTemplate API RedisTemplate的用法