StringRedisTemplate 和 RedisTemplate 的区别

版权声明:学习自 CSDN博主「ha_lydms」的原创文章
原文链接:https://blog.csdn.net/lydms/article/details/105512006

  • 两者的关系是 StringRedisTemplate 继承 RedisTemplate。

  • 两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。

  • SDR ( SpringDataRedis ) 默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略。

    • StringRedisTemplate 默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的(StringRedisSerializer)。
    • RedisTemplate 默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。(JdkSerializationRedisSerializer)
  • Redis 使用的区别 :
    RedisTemplate 使用的序列类在在操作数据的时候,比如说存入数据会将数据先序列化成字节数组然后在存入Redis数据库,这个时候打开Redis查看的时候,你会看到你的数据不是以可读的形式展现的,而是以字节数组显示,类似下面(RedisTemplate)

    当然从Redis 获取数据的时候也会默认将数据当做字节数组转化,这样就会导致一个问题,当需要获取的数据不是以字节数组存在 redis 当中而是正常的可读的字符串的时候,比如说下面这种形式的数据(StringRedisTemplate)

    Redis当中的数据值是以数组形式显示出来的时候,只能使用RedisTemplate才能获取到里面的数据。
    Redis当中的数据值是以可读的形式显示出来的时候,只能使用StringRedisTemplate才能获取到里面的数据。
    所以当你使用RedisTemplate获取不到数据为NULL时,一般是获取的方式错误。检查一下数据是否可读即可。

  • 使用总结:

    StringRedisTemplate:当你的redis数据库里面本来存的是字符串数据或者你要存取的数据就是字符串类型数据的时候。
    RedisTemplate:但是如果你的数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,直接从Redis里面取出一个对象。

posted @ 2022-07-07 14:59  大于昨天  阅读(223)  评论(0编辑  收藏  举报