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