备注:测试版本 redis 4.0.9
Table of Contents
- 列表(List)命令概述
- 1.1 Blpop 命令
- 1.2 Brpop 命令
- 1.3 Brpoplpush 命令
- 1.4 Lindex 命令
- 1.5 Linsert 命令
- 1.6 Llen 命令
- 1.7 Lpop 命令
- 1.8 Lpush 命令
- 1.9 Lpushx 命令
- 1.10 Lrange 命令
- 1.11 Lrem 命令
- 1.12 Lset 命令
- 1.13 Ltrim 命令
- 1.14 Rpop 命令
- 1.15 Rpoplpush 命令
- 1.16 Rpush 命令
- 1.17 Rpushx 命令
- 参考
列表(List)命令概述
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
命令 | 概述 |
---|---|
BLPOP key1 [key2 ] timeout | 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 |
BRPOP key1 [key2 ] timeout | 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 |
BRPOPLPUSH source destination timeout | 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 |
BRPOPLPUSH source destination timeout | 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 |
LINDEX key index | 通过索引获取列表中的元素 |
LINSERT key BEFORE or AFTER pivot value | 在列表的元素前或者后插入元素 |
LLEN key | 获取列表长度 |
LPOP key | 移出并获取列表的第一个元素 |
LPUSH key value1 [value2] | 将一个或多个值插入到列表头部 |
LPUSHX key value | 将一个或多个值插入到已存在的列表头部 |
LRANGE key start stop | 获取列表指定范围内的元素 |
LREM key count value | 移除列表元素 |
LSET key index value | 通过索引设置列表元素的值 |
LTRIM key start stop | 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素, 不在指定区间之内的元素都将被删除。 |
RPOP key | 移除并获取列表最后一个元素 |
RPOPLPUSH source destination | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 |
RPUSH key value1 [value2] | 在列表中添加一个或多个值 |
RPUSHX key value | 为已存在的列表添加值 |
1.1 Blpop 命令
语法:
BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
复制
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb (integer) 8 127.0.0.1:6379> blpop my_db 1 1) "my_db" 2) "tidb" 127.0.0.1:6379> blpop my_db 2 1) "my_db" 2) "hive" 127.0.0.1:6379> blpop my_db -1 (error) ERR timeout is negative 127.0.0.1:6379> -- 后面加入的在最前面 127.0.0.1:6379> lpush my_db2 oracle (integer) 1 127.0.0.1:6379> lpush my_db2 mysql (integer) 2 127.0.0.1:6379> blpop my_db2 1 1) "my_db2" 2) "mysql"
复制
1.2 Brpop 命令
语法:
BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb (integer) 8 127.0.0.1:6379> lrange my_db 0 100 1) "tidb" 2) "hive" 3) "mongodb" 4) "redis" 5) "db2" 6) "sqlserver" 7) "mysql" 8) "oracle" 127.0.0.1:6379> BRPOP my_db 2 1) "my_db" 2) "oracle" 127.0.0.1:6379> lrange my_db 0 100 1) "tidb" 2) "hive" 3) "mongodb" 4) "redis" 5) "db2" 6) "sqlserver" 7) "mysql" 127.0.0.1:6379>
复制
1.3 Brpoplpush 命令
语法:
BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb (integer) 8 127.0.0.1:6379> lpush my_db2 dm (integer) 1 127.0.0.1:6379> BRPOPLPUSH my_db my_db2 100 "oracle" 127.0.0.1:6379> lrange my_db 0 100 1) "tidb" 2) "hive" 3) "mongodb" 4) "redis" 5) "db2" 6) "sqlserver" 7) "mysql" 127.0.0.1:6379> lrange my_db2 0 100 1) "oracle" 2) "dm" 127.0.0.1:6379>
复制
1.4 Lindex 命令
语法:
LINDEX key index 通过索引获取列表中的元素
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> del key my_db2 (integer) 1 127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb (integer) 8 127.0.0.1:6379> lindex my_db 1 "hive" 127.0.0.1:6379> lindex my_db 0 "tidb" 127.0.0.1:6379>
复制
1.5 Linsert 命令
语法:
LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> lpush my_db oracle mysql (integer) 2 127.0.0.1:6379> 127.0.0.1:6379> linsert my_db before mysql redis (integer) 3 127.0.0.1:6379> lrange my_db 0 100 1) "redis" 2) "mysql" 3) "oracle" 127.0.0.1:6379>
复制
1.6 Llen 命令
语法:
LLEN key 获取列表长度
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb (integer) 8 127.0.0.1:6379> llen my_db (integer) 8 127.0.0.1:6379>
复制
1.7 Lpop 命令
语法:
LPOP key 移出并获取列表的第一个元素
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> rpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb (integer) 8 127.0.0.1:6379> lpop my_db "oracle" 127.0.0.1:6379> lrange my_db 0 100 1) "mysql" 2) "sqlserver" 3) "db2" 4) "redis" 5) "mongodb" 6) "hive" 7) "tidb" 127.0.0.1:6379>
复制
1.8 Lpush 命令
语法:
LPUSH key value1 [value2] 将一个或多个值插入到列表头部
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb hive tidb (integer) 8 127.0.0.1:6379> lrange my_db 0 100 1) "tidb" 2) "hive" 3) "mongodb" 4) "redis" 5) "db2" 6) "sqlserver" 7) "mysql" 8) "oracle" 127.0.0.1:6379>
复制
1.9 Lpushx 命令
语法:
LPUSHX key value 将一个或多个值插入到已存在的列表头部
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb (integer) 6 127.0.0.1:6379> lrange my_db 0 100 1) "mongodb" 2) "redis" 3) "db2" 4) "sqlserver" 5) "mysql" 6) "oracle" 127.0.0.1:6379> lpushx my_db hive tidb (integer) 8 127.0.0.1:6379> lrange my_db 0 100 1) "tidb" 2) "hive" 3) "mongodb" 4) "redis" 5) "db2" 6) "sqlserver" 7) "mysql" 8) "oracle" 127.0.0.1:6379>
复制
1.10 Lrange 命令
语法:
LRANGE key start stop 获取列表指定范围内的元素
复制
测试记录
127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb (integer) 6 127.0.0.1:6379> lrange my_db 0 100 1) "mongodb" 2) "redis" 3) "db2" 4) "sqlserver" 5) "mysql" 6) "oracle"
复制
1.11 Lrem 命令
语法:
LREM key count value 移除列表元素
复制
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb (integer) 6 127.0.0.1:6379> lrem my_db 2 oracle (integer) 1 127.0.0.1:6379> lrange my_db 0 100 1) "mongodb" 2) "redis" 3) "db2" 4) "sqlserver" 5) "mysql" 127.0.0.1:6379> 127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb (integer) 6 127.0.0.1:6379> lpush my_db oracle (integer) 7 127.0.0.1:6379> 127.0.0.1:6379> lrange my_db 0 100 1) "oracle" 2) "mongodb" 3) "redis" 4) "db2" 5) "sqlserver" 6) "mysql" 7) "oracle" 127.0.0.1:6379> 127.0.0.1:6379> lrem my_db 2 oracle (integer) 2 127.0.0.1:6379> lrange my_db 0 100 1) "mongodb" 2) "redis" 3) "db2" 4) "sqlserver" 5) "mysql" 127.0.0.1:6379>
复制
1.12 Lset 命令
语法:
LSET key index value 通过索引设置列表元素的值
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> 127.0.0.1:6379> lset my_db 0 oracle (error) ERR no such key 127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379> lpush my_db redis mongodb (integer) 2 127.0.0.1:6379> lset my_db 0 oracle OK 127.0.0.1:6379>
复制
1.13 Ltrim 命令
语法:
LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb (integer) 6 127.0.0.1:6379> ltrim my_db 0 1 OK 127.0.0.1:6379> 127.0.0.1:6379> lrange my_db 0 100 1) "mongodb" 2) "redis" 127.0.0.1:6379>
复制
1.14 Rpop 命令
语法:
RPOP key 移除并获取列表最后一个元素
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb (integer) 6 127.0.0.1:6379> lrange my_db 0 100 1) "mongodb" 2) "redis" 3) "db2" 4) "sqlserver" 5) "mysql" 6) "oracle" 127.0.0.1:6379> rpop my_db "oracle" 127.0.0.1:6379> lrange my_db 0 100 1) "mongodb" 2) "redis" 3) "db2" 4) "sqlserver" 5) "mysql" 127.0.0.1:6379>
复制
1.15 Rpoplpush 命令
语法:
RPOPLPUSH source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> del key my_db2 (integer) 0 127.0.0.1:6379> lpush my_db oracle mysql sqlserver db2 redis mongodb (integer) 6 127.0.0.1:6379> lpush my_db2 dm (integer) 1 127.0.0.1:6379> rpoplpush my_db my_db2 "oracle" 127.0.0.1:6379> lrange my_db2 0 100 1) "oracle" 2) "dm" 127.0.0.1:6379>
复制
1.16 Rpush 命令
语法:
RPUSH key value1 [value2] 在列表中添加一个或多个值
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> rpush my_db oracle mysql sqlserver db2 redis mongodb (integer) 6 127.0.0.1:6379> lrange my_db 0 100 1) "oracle" 2) "mysql" 3) "sqlserver" 4) "db2" 5) "redis" 6) "mongodb" 127.0.0.1:6379>
复制
1.17 Rpushx 命令
语法:
RPUSHX key value 为已存在的列表添加值
复制
测试记录
127.0.0.1:6379> del key my_db (integer) 1 127.0.0.1:6379> Rpushx my_db oracle (integer) 0 127.0.0.1:6379> lrange my_db 0 100 (empty list or set) 127.0.0.1:6379> 127.0.0.1:6379> rpush my_db mysql (integer) 1 127.0.0.1:6379> Rpushx my_db oracle (integer) 2 127.0.0.1:6379> lrange my_db 0 100 1) "mysql" 2) "oracle" 127.0.0.1:6379>
复制
参考
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
国产非关系型数据库 Eloqkv 初体验
JiekeXu
163次阅读
2025-04-10 23:51:35
融合Redis缓存的PostgreSQL高可用架构
梧桐
111次阅读
2025-04-08 06:35:40
Redis概要
听溪
50次阅读
2025-04-11 10:23:10
Redis改协议内幕曝光!核心开发者亲述被“踢出局”,外部贡献者几乎全跑光了!
老鱼笔记
43次阅读
2025-04-17 10:41:56
Redis数据库——Cluster集群模式
编程Cookbook
42次阅读
2025-04-16 15:34:44
安装与配置Redis
鲁鲁
42次阅读
2025-04-11 10:26:10
使用Jedis访问Redis数据库
怀念和想念
38次阅读
2025-04-11 15:08:30
Redis geo 实战:“附近的人”实现,打造社交的新维度
老王两点中
36次阅读
2025-04-11 09:02:30
Redis提供的持久化机制
luyingjun
29次阅读
2025-04-11 15:11:05
亚马逊:MemoryDB,一款内存优先的云数据库
数据库应用创新实验室
26次阅读
2025-04-18 09:54:15