1、leftPush(K key, V value)

从集合左边插入值

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

image-20211028161003964

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

image-20211028162709885

3、leftPushAll(K key, Collection values)

从左边批量插入新值

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

image-20211028163912176

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

image-20211028165050000

6、leftPop(K key)

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

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

image-20211028165424396

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

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

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

image-20211028170726469

8、rightPopAndLeftPush(K k1, K k2)

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

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

image-20211028173144174

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

image-20211028173915959

image-20211028174004748

10、rightPush(K key, V value)

从右侧插入新值

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

image-20211028180346272

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

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

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

image-20211028180909547

12、rightPushAll(K key, V… values)

从右侧批量插入

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

image-20211028181234661

13、rightPushAll(K key, Collection values)

从右侧批量插入

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

image-20211028181522430

14、rightPushIfPresent(K key, V value)

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

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

image-20211028182241565

15、rightPop(K key)

默认从最右侧移除一个值

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

image-20211028182605961

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

image-20211028183337630

18、size(K key)

获取对应key的集合长度

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

image-20211028183702987

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

image-20211029155952080

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

image-20211029160654225

image-20211029170206215

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字符串,方便存储解析

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐