暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

redis list类型命令

原创 只是甲 2020-11-14
439

备注:测试版本 redis 4.0.9

Table of Contents

列表(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> 
复制

参考

1.https://www.redis.net.cn/tutorial/3505.html

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

只是甲
关注
暂无图片
获得了142次点赞
暂无图片
内容获得46次评论
暂无图片
获得了334次收藏
TA的专栏
大数据及数据仓库
收录239篇内容
Redis从小白到小工
收录19篇内容
MySQL开发
收录24篇内容
目录
  • 列表(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 命令
  • 参考