1、leftPush(K key, V value)

从集合左边插入值

  • 值重复无影响
  • 先进先出
redisTemplate.opsForList().leftPush("list","a");
redisTemplate.opsForList().leftPush("list","a");
redisTemplate.opsForList().leftPush("list","b");

redis temp redisTemplate.opsForList_redis

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");

redis temp redisTemplate.opsForList_redis_02

3、leftPushAll(K key, Collection values)

从左边批量插入新值

List<String> strings = Arrays.asList("j", "q", "k");
redisTemplate.opsForList().leftPushAll("list", strings);

redis temp redisTemplate.opsForList_redis_03

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");

redis temp redisTemplate.opsForList_java_04

6、leftPop(K key)

默认移除key中最左的一个值

redisTemplate.opsForList().leftPop("list");

redis temp redisTemplate.opsForList_redis_05

7、leftPop(K key, long timeout, TimeUnit unit)

指定过期时间后删除key中最左的一个值

redisTemplate.opsForList().leftPop("list",1,TimeUnit.MINUTES);

redis temp redisTemplate.opsForList_redis_06

8、rightPopAndLeftPush(K k1, K k2)

移除k1中最右的值,并将移除的值插入k2中最左侧

  • k1和k2不是同一个key时,k1右侧移除,k2左侧插入,k2不存在时则新增一个然后在插入
  • k1和k2是同一个key时,相当于把最右侧的值移到了最左侧
redisTemplate.opsForList().rightPopAndLeftPush("list", "list2");

redis temp redisTemplate.opsForList_redis temp_07

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);

redis temp redisTemplate.opsForList_List_08

redis temp redisTemplate.opsForList_redis_09

10、rightPush(K key, V value)

从右侧插入新值

redisTemplate.opsForList().rightPush("rightList",'a');
redisTemplate.opsForList().rightPush("rightList",'b');
redisTemplate.opsForList().rightPush("rightList",'c');

redis temp redisTemplate.opsForList_List_10

11、rightPush(K key, V v1, V v2)

从右查找v1,并在v1右侧插入新值v2

  • v1有多个,只找到最靠右的一个即可
  • v1没有,不插入
redisTemplate.opsForList().rightPush("rightList", "b", "e");

redis temp redisTemplate.opsForList_批量插入_11

12、rightPushAll(K key, V… values)

从右侧批量插入

redisTemplate.opsForList().rightPushAll("rightList", "e", "f","g");

redis temp redisTemplate.opsForList_redis_12

13、rightPushAll(K key, Collection values)

从右侧批量插入

List<String> strings = Arrays.asList("j", "q", "k");
redisTemplate.opsForList().rightPushAll("rightList", strings);

redis temp redisTemplate.opsForList_redis_13

14、rightPushIfPresent(K key, V value)

如果key存在,在右侧新插入value,否则不插入

redisTemplate.opsForList().rightPushIfPresent("rightList", "a");

redis temp redisTemplate.opsForList_java_14

15、rightPop(K key)

默认从最右侧移除一个值

redisTemplate.opsForList().rightPop("rightList");

redis temp redisTemplate.opsForList_批量插入_15

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);

redis temp redisTemplate.opsForList_List_16

18、size(K key)

获取对应key的集合长度

Long size = redisTemplate.opsForList().size("rightList");
System.out.println("size = " + size);

redis temp redisTemplate.opsForList_redis temp_17

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");

redis temp redisTemplate.opsForList_批量插入_18

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);

redis temp redisTemplate.opsForList_批量插入_19

redis temp redisTemplate.opsForList_redis_20

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");

23、拓展

当存储对象、对象集合时,最好转为JSON字符串,方便存储解析