RedisTemplate使用最详解(二)--- opsForList()
# 1、leftPush(K key, V value)
从集合左边插入值
值重复无影响 先进先出
redisTemplate.opsForList().leftPush("list","a");
redisTemplate.opsForList().leftPush("list","a");
redisTemplate.opsForList().leftPush("list","b");
2
3
# 2、leftPush(K key, V v, V v1)
从集合左边开始在v值后边插入新值v1
- 在集合中查找v值
- 有多个v值时,从左边开始查到第一个v值即可(也就是最后插入的v值,靠左的v值),然后在v值左边插入新值v1
- 不存在v时,不插入新值v1
redisTemplate.opsForList().leftPush("list", "a", "e");
# 3、leftPushAll(K key, Collection values)
从左边批量插入新值
List<String> strings = Arrays.asList("j", "q", "k");
redisTemplate.opsForList().leftPushAll("list", strings);
2
# 4、leftPushAll(K key, V… values)
从左边批量插入新值(同上)
redisTemplate.opsForList().leftPushAll("list", "j", "q", "k");
# 5、leftPushIfPresent(K key, V value)
如果key存在,从左边插入新值
- key不存在,不新增
redisTemplate.opsForList().leftPushIfPresent("list", "j");
# 6、leftPop(K key)
默认移除key中最左的一个值
redisTemplate.opsForList().leftPop("list");
# 7、leftPop(K key, long timeout, TimeUnit unit)
指定过期时间后删除key中最左的一个值
redisTemplate.opsForList().leftPop("list",1,TimeUnit.MINUTES);
# 8、rightPopAndLeftPush(K k1, K k2)
移除k1中最右的值,并将移除的值插入k2中最左侧
k1和k2不是同一个key时,k1右侧移除,k2左侧插入,k2不存在时则新增一个然后在插入 k1和k2是同一个key时,相当于把最右侧的值移到了最左侧
redisTemplate.opsForList().rightPopAndLeftPush("list", "list2");
# 9、rightPopAndLeftPush(K k1, K k2, long timeout, TimeUnit unit)
指定过期时间后,移除k1中最右的值,并将移除的值插入k2中最左侧(同上)
k1和k2不是同一个key时,k1右侧移除,k2左侧插入,k2不存在时则新增一个然后在插入 k1和k2是同一个key时,相当于把最右侧的值移到了最左侧
redisTemplate.opsForList().rightPopAndLeftPush("list", "list2",1,TimeUnit.MINUTES);
# 10、rightPush(K key, V value)
从右侧插入新值
redisTemplate.opsForList().rightPush("rightList",'a');
redisTemplate.opsForList().rightPush("rightList",'b');
redisTemplate.opsForList().rightPush("rightList",'c');
2
3
# 11、rightPush(K key, V v1, V v2)
从右查找v1,并在v1右侧插入新值v2
v1有多个,只找到最靠右的一个即可 v1没有,不插入
redisTemplate.opsForList().rightPush("rightList", "b", "e");
# 12、rightPushAll(K key, V… values)
从右侧批量插入
redisTemplate.opsForList().rightPushAll("rightList", "e", "f","g");
# 13、rightPushAll(K key, Collection values)
从右侧批量插入
List<String> strings = Arrays.asList("j", "q", "k");
redisTemplate.opsForList().rightPushAll("rightList", strings);
2
3
# 14、rightPushIfPresent(K key, V value)
如果key存在,在右侧新插入value,否则不插入
redisTemplate.opsForList().rightPushIfPresent("rightList", "a");
# 15、rightPop(K key)
默认从最右侧移除一个值
redisTemplate.opsForList().rightPop("rightList");
# 16、rightPop(K key, long timeout, TimeUnit unit)
指定过期时间后,从最右侧移除一个值
redisTemplate.opsForList().rightPop("rightList",1,TimeUnit.MINUTES);
# 17、index(K key, final long index)
获取指定位置的值(index从左往右,从0开始)
超过下标,不报错,返回null
String string1 = (String) redisTemplate.opsForList().index("rightList", 2);
System.out.println("string1 = " + string1);
2
# 18、size(K key)
获取对应key的集合长度
Long size = redisTemplate.opsForList().size("rightList");
System.out.println("size = " + size);
2
# 19、set(K key, final long index, V value)
在指定坐标位置插入(替换)新值
index不存在,报错(ERR index out of range) key不存在,报错(ERR no such key) 从左侧插入
redisTemplate.opsForList().set("rightList",2,"e");
# 20、trim(K key, long long1, long long2)
截取下标long1和long2之间的值,包括long1和long2对应的值,并将其保留为key对应的新值
左侧坐标从0开始,右侧从-1开始
当long1超过坐标时(此时与long2无关),都会截取为空,key会被删除
当long1为负时(此时与long2无关),都会截取为空,key会被删除
当long1为正且在下标存在其中,long2为负数时,只要两个没有重叠,相当于去左去右,保留了中间的部分
当long1为正且在下标存在其中,long2为负数时,只要两个交叉重叠,截取为空,如下图
redisTemplate.opsForList().trim("rightList",1,3);
# 21、List range(K key, long start, long end)
获取指定下标间的值
redisTemplate.opsForList().range("rightList", 0, -1);//获取所有值
22、remove(K key, long count, Object value) 从存储在键中的列表中删除等于值的元素的第一个计数事件。
count> 0:删除等于从左到右移动的值的第一个元素; count< 0:删除等于从右到左移动的值的第一个元素; count = 0:删除等于value的所有元素。
redisTemplate.opsForList().remove("rightList", 0, "c");