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

    
    
    
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    尚硅谷前端2020Web前端学习记录
    阿里网盘阿里云网盘内测资格获取,阿里网盘开通
    冰眼冷链物流监控平台-2020微服务项目实战
    探花交友智能推荐社交项目-2020Java大数据实战
    互联网Java工程师面试突击三季
    恋上数据结构与算法(一、二、三季)
    布客&#183;ApacheCN 编程/后端/大数据/人工智能学习资源 2020.9
    NumPy 基础知识·翻译完成
    NumPy 初学者指南中文第三版·翻译完成
    NumPy 秘籍中文第二版·翻译完成
  • 原文地址:https://www.cnblogs.com/xr210/p/13940946.html
Copyright © 2020-2023  润新知