StringRedisTemplate与RedisTemplate区别点
-
两者的关系是 StringRedisTemplate 继承 RedisTemplate。
-
两者的数据是不共通的,也就是说 StringRedisTemplate 只能管理 StringRedisTemplate 里面的数据,RedisTemplate 只能管理 RedisTemplate中 的数据。
-
其实他们两者之间的 区别主要在于他们使用的序列化类:
- RedisTemplate 使用的是 JdkSerializationRedisSerializer 存入数据会将数据先序列化成字节数组然后在存入Redis数据库。
- StringRedisTemplate 使用的是 StringRedisSerializer
-
使用时注意事项:
- 当你的 redis 数据库里面本来存的是字符串数据或者你要存取的数据就是字符串类型数据的时候,那么你就使用 StringRedisTemplate 即可。(StringRedisTemplate 操作
set key value ex ex_time
类型的记录) - 但是如果你的数据是复杂的对象类型,而 取出的时候又不想做任何的数据转换,直接从Redis里面取出一个对象,那么使用RedisTemplate是更好的选择。
- 当你的 redis 数据库里面本来存的是字符串数据或者你要存取的数据就是字符串类型数据的时候,那么你就使用 StringRedisTemplate 即可。(StringRedisTemplate 操作
-
RedisTemplate 使用时常见问题:
- redisTemplate 中存取数据都是字节数组。当redis中存入的数据是可读形式而非字节数组时,使用redisTemplate 取值的时候会无法获取导出数据,获得的值为null。可以使用 StringRedisTemplate 试试。
RedisTemplate中定义了5种数据结构操作
redisTemplate.opsForValue(); //操作字符串
redisTemplate.opsForHash(); //操作hash
redisTemplate.opsForList(); //操作list
redisTemplate.opsForSet(); //操作set
redisTemplate.opsForZSet(); //操作有序set