使用RedisTemplate緩存List的一系列操作示例

List常用操作

首先新建兩個list用來做後面得舉例操作,便於理解

List<String> list1 = new ArrayList<>();
        list1.add("1");
        list1.add("2");
        list1.add("3");
List<String> list2 = new ArrayList<>();
        list2.add("4");
        list2.add("5");
        list2.add("6");

    對以上兩個list進行redis相關操作(常用操作)

    		// 往緩存數據右邊存儲數據
            // redisTemplate.opsForList().rightPush("testKey1",list1);
            redisTemplate.opsForList().rightPush("testKey2",list2);
            // 獲取緩存中得某區間得數據
            redisTemplate.opsForList().range("testKey1", 0, 0); // 獲取下標0~0的
            redisTemplate.opsForList().range("testKey1", 0, 1); // 獲取下標0~1的
            redisTemplate.opsForList().range("testKey1", 0, -1); // 獲取所有的
            // 當鍵存在的時候,同rightPush一樣存值到鍵下面(只有在鍵存在纔會更新keyName下的值,如果鍵不存在,不會對數據進行任何操作)
            redisTemplate.opsForList().rightPushIfPresent("testKey1", 1);
            // 獲取指定下標的元素:如果下標是-1,則返回最後一個,下標越界則返回null
            redisTemplate.opsForList().index("testKey1",-1);
            // 移除指定位置的數據:接收3個參數,分別是緩存的鍵名,計數事件,要移除的值。計數事件可以傳入的有三個值,分別是-1,0,1。
            // 計數事件傳-1表示:從存儲容器的最右邊開始,刪除一個與要移除的值匹配的數據;
            // 計數事件傳0表示:刪除所有與傳入值匹配的數據;
            // 計數事件傳1表示:從存儲容器的最左邊開始,刪除一個與要移除的值匹配的數據
            redisTemplate.opsForList().remove("testKey1",0,4);
            // rightPopAndLeftPush用於操作兩個鍵之間的數據,接受兩個參數,分別是源key、目標key。該函數會將源key進行rightPop,再將返回的值,作爲輸入參數,在目標key上進行leftPush。
            redisTemplate.opsForList().rightPushAll("testKey1",list1); // [1,2,3,4]
            redisTemplate.opsForList().rightPushAll("testKey2",list2); // [1,2,3]
            // 用rightPop取出keyName1中的4,然後用LeftPush將4放置在keyName2的左邊
            redisTemplate.opsForList().rightPopAndLeftPush("testKey1","testKey2");  // [4,1,2,3]
            // 獲取緩存的鍵的值的長度
            redisTemplate.opsForList().size("testKey1");
            // 判斷一個鍵是否存在
            Boolean flag = redisTemplate.hasKey("testKey2");
            // 刪除緩存的鍵的值
            redisTemplate.delete("testKey1");
            redisTemplate.delete("testKey2");
    
      詳細及其他操作:

      1.判斷一個鍵是否存在

      Boolean flag = redisTemplate.hasKey("keyName")
      

        2.獲取緩存的指定區間數據

        redisTemplate.opsForList().range("test", 0, 0));  // 獲取緩存的List從下標0到0的值
        redisTemplate.opsForList().range("test", 0, 1));  // 獲取緩存的List從下標0到1的值
        redisTemplate.opsForList().range("test", 0, -1));  // 獲取緩存的List所有的值
        

        3.刪除緩存中的某個鍵

        redisTemplate.delete("kayName"); 
        

        4.獲取該鍵集合的長度

        redisTemplate.opsForList().size("keyName");
        

        5.往緩存的數據的左邊存值

        redisTemplate.opsForList().leftPush("keyName",list1);
        

        6.往緩存的數據的右邊存值

        redisTemplate.opsForList().rightPush("keyName",list2);
        

        7.往緩存的左邊一次性的存list數組

        redisTemplate.opsForList().leftPushAll("keyName",list);
        

        8.往緩存右邊一次性的存list數組

        redisTemplate.opsForList().rightPushAll("keyName",list);
        

        9.當鍵存在的時候,同rightPush一樣存值到鍵下面 (只有在鍵存在纔會更新keyName下的值,如果鍵不存在,不會對數據進行任何操作)

        redisTemplate.opsForList().rightPushIfPresent("keyName", 1);
        

        10.當鍵存在的時候,同leftPush一樣存值到鍵下面 (只有在鍵存在纔會更新keyName下的值,如果鍵不存在,不會對數據進行任何操作)

        redisTemplate.opsForList().leftPushIfPresent("keyName", 1);
        

        11.移除redis中最右邊的一個元素 (當keyName中的元素被移除完,即返回爲空,那麼在redis中這個key也不存在了,這時候如果再去進行leftPush或者rightPush這類操作,是無法再添加數據的。)

        redisTemplate.opsForList().rightPop("keyName");
        

        12.移除redis中最左邊的一個元素 (當keyName中的元素被移除完,即返回爲空,那麼在redis中這個key也不存在了,這時候如果再去進行leftPush或者rightPush這類操作,是無法再添加數據的。)

        redisTemplate.opsForList().leftPop("keyName");
        

        13.獲取list中指定位置的元素 (如果下標是-1,則返回list的最後一個元素;如果下標越界,則返回null)

        redisTemplate.opsForList().index("keyName",-1);
        

        14.截取指定區間的元素 (與range不同,range是獲取指定區間內的數據,而trim是留下指定區間的數據,而刪除不在區間的所有數據。trim是void,不會返回任何數據)

        redisTemplate.opsForList().trim("keyName",0,2); // 獲取list種下標0到2的數據,並刪除其他數據	
        

        15.移除鍵中的指定元素,接收3個參數,分別是緩存的鍵名,計數事件,要移除的值。計數事件可以傳入的有三個值,分別是-1,0,1。
        -1代表從存儲容器的最右邊開始,刪除一個與要移除的值匹配的數據;
        0代表刪除所有與傳入值匹配的數據;
        1代表從存儲容器的最左邊開始,刪除一個與要移除的值匹配的數據。

        redisTemplate.opsForList().remove("keyName",0,"keyValue");
        

        16.rightPopAndLeftPush該函數用於操作兩個鍵之間的數據,接受兩個參數,分別是源key、目標key。該函數會將源key進行rightPop,再將返回的值,作爲輸入參數,在目標key上進行leftPush。
        具體代碼如下:

        redisTemplate.opsForList().rightPushAll("keyName1",value1); //[1,2,3,4]
        redisTemplate.opsForList().rightPushAll("keyName2",value2); //[1,2,3]
        //  用rightPop取出keyName1中的4,然後用LeftPush將4放置在keyName2的左邊
        redisTemplate.opsForList().rightPopAndLeftPush("keyName1","keyName2");  // [4,1,2,3]
        

        時間關係,寫的比較簡潔,後面會補上各種用法的執行前後的結果對比便於理解。

        發表評論
        所有評論
        還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
        相關文章