zoukankan      html  css  js  c++  java
  • 使用RedisTemplate缓存List的一系列操作示例

    redisTemplate是Spring封装的一个比较强大的模板,方便在开发的时候操作redis缓存。
    Redis缓存一般能存的类型有String、List、Set、Hash、Zset。
    本篇主要介绍存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]

    转载地址:  https://blog.csdn.net/weixin_42216142/article/details/93514503

    
    
    
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    169. Majority Element
    283. Move Zeroes
    1331. Rank Transform of an Array
    566. Reshape the Matrix
    985. Sum of Even Numbers After Queries
    1185. Day of the Week
    867. Transpose Matrix
    1217. Play with Chips
    766. Toeplitz Matrix
    1413. Minimum Value to Get Positive Step by Step Sum
  • 原文地址:https://www.cnblogs.com/xr210/p/13940946.html
Copyright © 2011-2022 走看看