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

您所在的位置:网站首页 redis存储对象list 使用RedisTemplate缓存List的一系列操作示例

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

#使用RedisTemplate缓存List的一系列操作示例| 来源: 网络整理| 查看: 265

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

List常用操作

首先新建两个list用来做后面得举例操作,便于理解

List list1 = new ArrayList(); list1.add("1"); list1.add("2"); list1.add("3"); List 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]

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3