使用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]
        

        时间关系,写的比较简洁,后面会补上各种用法的执行前后的结果对比便于理解。

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