前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis之list核心命令演示与细节探索

redis之list核心命令演示与细节探索

作者头像
九转成圣
发布2024-09-08 11:19:41
30
发布2024-09-08 11:19:41
举报
文章被收录于专栏:csdn

redis之list核心命令演示与细节探索

BLMOVE source destination LEFT|RIGHT LEFT|RIGHT timeout summary: Pop an element from a list, push it to another list and return it; or block until one is available since: 6.2.0

BLPOP key [key …] timeout summary: Remove and get the first element in a list, or block until one is available since: 2.0.0

BRPOP

BRPOP key [key …] timeout 移除并且得到集合中的最后一个元素,或者阻塞直到有一个元素(或者超时报错)

summary: Remove and get the last element in a list, or block until one is available

since: 2.0.0

代码语言:javascript
复制
> lrange test:list1 0 -1

> lrange test:list2 0 -1
list2_0
> lrange test:list3 0 -1
list3_0
> brpop test:list1 test:list2 test:list3 0
test:list2
list2_0

说明:

  1. test:list1中没有元素,test:list2中有元素,test:list3中有元素,brpop test:list1 test:list2 test:list3 0会依次检查test:list1,test:list2,test:list3三个list,如果有则从右边弹出元素,并返回弹出元素的key和弹出的元素
  2. 如果test:list1 test:list2 test:list3中都没有元素,会一直阻塞,直到其中有一个有元素,返回弹出元素的key和弹出的元素
  3. 超时时间单位为秒,0表示无限期阻塞

BRPOPLPUSH source destination timeout summary: Pop an element from a list, push it to another list and return it; or block until one is available since: 2.2.0

LINDEX key index summary: Get an element from a list by its index since: 1.0.0

LINSERT key BEFORE|AFTER pivot element summary: Insert an element before or after another element in a list since: 2.2.0

LLEN key summary: Get the length of a list since: 1.0.0

LMOVE source destination LEFT|RIGHT LEFT|RIGHT summary: Pop an element from a list, push it to another list and return it since: 6.2.0

LPOP key [count] summary: Remove and get the first elements in a list since: 1.0.0

LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len] summary: Return the index of matching elements on a list since: 6.0.6

LPUSH key element [element …] summary: Prepend one or multiple elements to a list since: 1.0.0

LPUSHX

LPUSHX key element [element …] summary: Prepend an element to a list, only if the list exists

如果list存在,则从左边往里面添加元素

since: 2.2.0

代码语言:javascript
复制
# key test:list:lpushx 不存在
> exists test:list:lpushx
0
# 如果key不存在lpushx失败
> lpushx test:list:lpushx 0
0
# key test:list:lpushx 依然不存在
> exists test:list:lpushx
0
# lpush 一个元素使key test:list:lpushx 存在
> lpush test:list:lpushx 0
1
# key  test:list:lpushx 存在
> exists test:list:lpushx
1
# 如果key test:list:lpushx 存在则lpushx成功
> lpush test:list:lpushx 1
2
> LRANGE  test:list:lpushx 0 -1
1
0

LRANGE

LRANGE key start stop summary: Get a range of elements from a list since: 1.0.0

说明:

  1. 计算offset有两种方式
    • 从头到尾,第一个元素的offset是0,第二个是1,以此类推
    • 从尾到头计算,倒数第一个元素的offset是-1,倒数第二个元素是-2,以此类推

LREM

LREM key count element summary: Remove elements from a list 从list中删除传入的元素 count=0时移除所有的 count>0时从左往右移除 count个 count<0时从右往左移除 -count个 since: 1.0.0

代码语言:javascript
复制
@Test
void listlrem() {
    String key = "test:list";
    redisTemplate.delete(key);
    ListOperations<String, String> ops = redisTemplate.opsForList();
    ops.leftPushAll(key,"v1","v2","v1","v3","v1","v1");
    System.out.println(ops.range(key,0,-1));
    int count = 0;
    // int count = 2;
    // int count = -2;
    ops.remove(key,count,"v1");
    System.out.println(ops.range(key,0,-1));
}

count = 0时删除全部的v1

代码语言:javascript
复制
[v1, v1, v3, v1, v2, v1]
[v3, v2]

count = 2时从左往右删除2个v1

代码语言:javascript
复制
[v1, v1, v3, v1, v2, v1]
[v3, v1, v2, v1]

count = -2时从右往左删除2个v1

代码语言:javascript
复制
[v1, v1, v3, v1, v2, v1]
[v1, v1, v3, v2]

LSET key index element summary: Set the value of an element in a list by its index since: 1.0.0

LTRIM key start stop summary: Trim a list to the specified range since: 1.0.0

RPOP key [count] summary: Remove and get the last elements in a list since: 1.0.0

RPOPLPUSH source destination summary: Remove the last element in a list, prepend it to another list and return it since: 1.2.0

RPUSH key element [element …] summary: Append one or multiple elements to a list since: 1.0.0

RPUSHX key element [element …] summary: Append an element to a list, only if the list exists since: 2.2.0

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • redis之list核心命令演示与细节探索
  • BRPOP
  • LPUSHX
  • LRANGE
  • LREM
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档