备注:测试版本 redis 4.0.9
文章目录
列表(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>