redisTemplate方法操作redis


最近項目做完了,發現redis教程看了不少,但是在redisTemplate還是有好多方法沒怎么用過,在此學習記錄下來。老版本的 Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 這里也只說明這五種數據類型操作。

String操作

​ Redis 字符串數據類型的相關命令用於管理 redis 字符串值

//        獲取值
        redisTemplate.opsForValue().get();
        redisTemplate.opsForValue().multiGet();
//        設置值
        redisTemplate.opsForValue().set("stone","demo",10, TimeUnit.SECONDS);
        HashMap<String, Object> sets = new HashMap<>();
        sets.put("test1","stone1");
        sets.put("test2","stone2");
        sets.put("test3","stone3");
        redisTemplate.opsForValue().multiSet(sets);
//        刪除值
        redisTemplate.delete();
//        原子操作
        redisTemplate.opsForValue().increment();

List操作

​ Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)

​ 一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)。

        /**
         * List操作
         */
//        獲取所有list值
        List<Object> lTest = redisTemplate.opsForList().range("lTest", 0,-1);
        Long aLong = redisTemplate.opsForList().leftPushAll("lTest", "value1", "value2", "value3", "value4");
//        在鏈表左端添加一個元素
        redisTemplate.opsForList().leftPush();
//        更新鏈表某個節點的值
        redisTemplate.opsForList().set();
//        刪除隊列左邊第一個元素並返回
        /**
         * 進程永久堵塞,直到有值塞入
         *
         * Removes and returns first element from lists stored at {@code key} . <br>
         * 	 * <b>Blocks connection</b> until element available or {@code timeout} reached.
         */
        redisTemplate.opsForList().leftPop("lTest",0,TimeUnit.SECONDS);
//        不會等待
        redisTemplate.opsForList().leftPop("lTest");

Set操作

​ Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味着集合中不能出現重復的數據。

集合對象的編碼可以是 intset 或者 hashtable。

​ Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。

集合中最大的成員數為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。

         /**
         * set操作       多個集合的交並集操作
         */
//        獲取set值
        redisTemplate.opsForSet().members("setTest");
//        添加值
        redisTemplate.opsForSet().add("setTest","test1","test2","test3","test4","test1");
        redisTemplate.opsForSet().add("setTest2","test1","test2","test3","test4","test1");
//        還有很多對比set集合,取出交並集合等操作
        Set<Object> setTest1 = redisTemplate.opsForSet().difference("setTest","setTest2");
        redisTemplate.opsForSet().intersect();
//        刪除
        redisTemplate.opsForZSet().remove();

ZSet操作

​ Redis 有序集合和集合一樣也是 string 類型元素的集合,且不允許重復的成員。

不同的是每個元素都會關聯一個 double 類型的分數。redis 正是通過分數來為集合中的成員進行從小到大的排序。

​ 有序集合的成員是唯一的,但分數(score)卻可以重復。

​ 集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。

        /**
         * zset操作   針對zset設置的score進行操作
         */
//        獲取
        Set<Object> zsetTest = redisTemplate.opsForZSet().range("zsetTest", 10, 10);
//        還有很多通過score來獲取值得操作
//        添加
        redisTemplate.opsForZSet().add();
        Set<ZSetOperations.TypedTuple<Object>> sets = new HashSet<>();
        sets.add(new DefaultTypedTuple("test1",10d));
        sets.add(new DefaultTypedTuple("test2",10d));
        sets.add(new DefaultTypedTuple("test3",10d));
        redisTemplate.opsForZSet().add("zsetTest",sets);
//        刪除
        redisTemplate.opsForZSet().remove();

Map操作

​ Redis hash 是一個 string 類型的 field(字段) 和 value(值) 的映射表,hash 特別適合用於存儲對象。

​ Redis 中每個 hash 可以存儲 232 - 1 鍵值對(40多億)。

        /**
         * map操作     作用單純map存取值+原子操作
         */
//        獲取
        redisTemplate.opsForHash().get();
        redisTemplate.opsForHash().multiGet();
//        添加
        redisTemplate.opsForHash().put();
//        刪除
        redisTemplate.opsForHash().delete();
//        原子操作
        redisTemplate.opsForHash().increment();


免責聲明!

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



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