RedisTemplate與StringRedisTemplate的區別


在操作Redis時會使用RedisTemplate與StringRedisTemplate,但是這兩者的區別呢?

其一:兩者的數據各自存取,不互通

RedisTemplate不能取StringRedisTemplate存放的數據

StringRedisTemplate不能取RedisTemplate的數據

@Test
    void contextLoads() {
        redisTemplate.opsForValue().set("key1","value1");
        System.out.println("redisTemplate存redisTemplate取:"+redisTemplate.opsForValue().get("key1"));
        System.out.println("redisTemplate存stringRedisTemplate取:"+stringRedisTemplate.opsForValue().get("key1"));

        stringRedisTemplate.opsForValue().set("key2","value2");
        System.out.println("stringRedisTemplate存redisTemplate取:"+redisTemplate.opsForValue().get("key2"));
        System.out.println("stringRedisTemplate存stringRedisTemplate取:"+stringRedisTemplate.opsForValue().get("key2"));

    }

效果如下:

redisTemplate存redisTemplate取:value1
redisTemplate存stringRedisTemplate取:null
stringRedisTemplate存redisTemplate取:null
stringRedisTemplate存stringRedisTemplate取:value2

 

其二:序列化策略不同

RedisTemplate默認采用的的是JDK自帶的序列化策略

StringRedisTemplate默認采用的是String的序列化策略

 

StringRedisTemplate繼承了RedisTemplate<String,String>

RedisTemplate存數據時是先將數據序列化成字節數組,再存放到Redis數據庫中,當我們用可視化工具查看數據時是一串看不懂得字節數組

 

 

StringRedisTemplate存數據后,用可視化工具查看的數據是可讀數據

 

 

總結一下:如果存取的數據是數據是String類型的那么就直接用StringRedisTemplate,如果是其他對象類型,且取出時不想做任何數據轉換,那么推薦使用RedisTemplate


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM