共计 4323 个字符,预计需要花费 11 分钟才能阅读完成。
redis 系列文章:
https://liudongdong.top/categ…
本篇起源:
https://liudongdong.top/archi…
公众号:雨中散步撒哈拉
备注:欢送关注公众号,一起学习,共同进步!
一、List 概述
Redis 列表是简略的字符串列表,依照插入程序排序。你能够增加一个元素到列表的头部(右边)或者尾部(左边)
一个列表最多能够蕴含 232 – 1 个元素 (4294967295, 每个列表超过 40 亿个元素)。
list 能够了解为一个通道,能够右边进,也能够左边进。
16293521471.png
依据上边的通道,也能够变体为俩种形式:
- 左进右出:队列
- 左进左出:桶
二、List 分类
依据集体了解和便于学习,集体进行了 list 命令的分类!
依据命令性质分为:
- 增:减少 list 数据
- 删:删除 list 数据
- 改:批改 list 数据
- 查:查问 list 数据
1. List 中的增
- lpush:右边推动一个或多个值
- lpushx 右边推动一个值,列表不存在时,有效
- rpush:左边推动一个或多个值
- rpushx:左边推动一个值,列表不存在时,有效
- linsert:在某一个值的前边或者后边插入一个值
2. List 中的删
- lrem:移除指定值,反复值依据指定数量进行移除
- lpop:头部弹出一个值
- rpop:右部弹出一个值
- blpop:阻塞弹出头部一个值,如果没有值,则期待有值或超时
- brpop:阻塞弹出尾部一个值,如果没有值,则期待有值或超时
- rpoplpush:尾部弹出一个值,并把该值压入到新的列表头部
- brpoppush:阻塞弹出一个值,并把该值压入到新的列表头部,如果没有值,则期待有值或超时
3. List 中的改
- lset:依据下标,进行批改值
- ltrim:截取列表值(区间范畴内,定位值)
4. List 中的查
- llen:查问列表长度
- lindex:依据下标进行获取某一个值
- lrange:依据下标范畴获取 list 列表
三、命令实际
依据分类,进行命令操作
1. List 中的增
127.0.0.1:6379> keys * | |
(empty list or set) | |
# 右边推动俩个值 | |
127.0.0.1:6379> lpush lists one two | |
(integer) 2 | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "two" | |
2) "one" | |
# 左边推动俩个值 | |
127.0.0.1:6379> rpush lists three four | |
(integer) 4 | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "two" | |
2) "one" | |
3) "three" | |
4) "four" | |
# 右边推动一个值,仅反对一个 | |
127.0.0.1:6379> lpushx lists five | |
(integer) 5 | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "five" | |
2) "two" | |
3) "one" | |
4) "three" | |
5) "four" | |
# 左边推动一个值,仅反对一个 | |
127.0.0.1:6379> rpushx lists sex | |
(integer) 6 | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "five" | |
2) "two" | |
3) "one" | |
4) "three" | |
5) "four" | |
6) "sex" | |
# 在某一个值的前边或后边进行插入值 | |
127.0.0.1:6379> linsert lists after three zero | |
(integer) 7 | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "five" | |
2) "two" | |
3) "one" | |
4) "three" | |
5) "zero" | |
6) "four" | |
7) "sex" | |
127.0.0.1:6379> |
2. List 中的删
127.0.0.1:6379> keys * | |
1) "lists" | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "five" | |
2) "two" | |
3) "one" | |
4) "three" | |
5) "zero" | |
6) "four" | |
7) "sex" | |
# 头部弹出一个值 | |
127.0.0.1:6379> lpop lists | |
"five" | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "two" | |
2) "one" | |
3) "three" | |
4) "zero" | |
5) "four" | |
6) "sex" | |
# 尾部弹出一个值 | |
127.0.0.1:6379> rpop lists | |
"sex" | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "two" | |
2) "one" | |
3) "three" | |
4) "zero" | |
5) "four" | |
# 头部阻塞弹出 two 值,没有 two 则取第一个值,如列表没值则返回 nil | |
127.0.0.1:6379> blpop lists two 3 | |
1) "lists" | |
2) "two" | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "one" | |
2) "three" | |
3) "zero" | |
4) "four" | |
127.0.0.1:6379> blpop lists two 3 | |
1) "lists" | |
2) "one" | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "three" | |
2) "zero" | |
3) "four" | |
# 创立一个新的列表 | |
127.0.0.1:6379> lpush lists2 aa | |
(integer) 1 | |
# 头部阻塞弹出 two 值,没有 aa 则取第一个值,如列表没值则返回 nil | |
127.0.0.1:6379> blpop lists2 aa 3 | |
1) "lists2" | |
2) "aa" | |
127.0.0.1:6379> blpop lists2 aa 3 | |
(nil) | |
(3.10s) | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "zero" | |
2) "four" | |
127.0.0.1:6379> lrange lists2 0 -1 | |
(empty list or set) | |
# 尾部弹出,并压入新的列表头部 | |
127.0.0.1:6379> rpoplpush lists lists2 | |
"four" | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "zero" | |
127.0.0.1:6379> lrange lists2 0 -1 | |
1) "four" | |
# 阻塞,尾部弹出,并压入新的列表头部 | |
127.0.0.1:6379> brpoplpush lists lists2 3 | |
"zero" | |
127.0.0.1:6379> lrange lists 0 -1 | |
(empty list or set) | |
127.0.0.1:6379> lrange lists2 0 -1 | |
1) "zero" | |
2) "four" | |
127.0.0.1:6379> brpoplpush lists lists2 3 | |
(nil) | |
(3.04s) | |
# 移除指定值 | |
127.0.0.1:6379> lrem lists2 1 zero | |
(integer) 1 | |
127.0.0.1:6379> lrange lists2 0 -1 | |
1) "four" | |
127.0.0.1:6379> |
3. List 中的改
# 创立 lists,并赋予值 | |
127.0.0.1:6379> lpush lists one two three four five sex | |
(integer) 6 | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "sex" | |
2) "five" | |
3) "four" | |
4) "three" | |
5) "two" | |
6) "one" | |
# 截取 list,范畴位 [1,4] | |
127.0.0.1:6379> ltrim lists 1 4 | |
OK | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "five" | |
2) "four" | |
3) "three" | |
4) "two" | |
# 依据下标进行设置值 | |
127.0.0.1:6379> lset lists 0 "hello world" | |
OK | |
127.0.0.1:6379> lrange lists 0 -1 | |
1) "hello world" | |
2) "four" | |
3) "three" | |
4) "two" | |
127.0.0.1:6379> |
4. List 中的查
127.0.0.1:6379> lrange lists2 0 -1 | |
1) "four" | |
127.0.0.1:6379> llen lists2 | |
(integer) 1 | |
127.0.0.1:6379> lindex lists2 0 | |
"four" | |
127.0.0.1:6379> lrange lists2 0 -1 | |
1) "four" | |
127.0.0.1:6379> |
附录
下表列出了列表相干的根本命令:
序号 | 命令及形容 | |
---|---|---|
1 | [BLPOP key1 key2] timeout 移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到期待超时或发现可弹出元素为止。 | |
2 | [BRPOP key1 key2] timeout 移出并获取列表的最初一个元素,如果列表没有元素会阻塞列表直到期待超时或发现可弹出元素为止。 | |
3 | BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞列表直到期待超时或发现可弹出元素为止。 | |
4 | LINDEX key index 通过索引获取列表中的元素 | |
5 | LINSERT key BEFORE | AFTER pivot value 在列表的元素前或者后插入元素 |
6 | LLEN key 获取列表长度 | |
7 | LPOP key 移出并获取列表的第一个元素 | |
8 | [LPUSH key value1 value2] 将一个或多个值插入到列表头部 | |
9 | LPUSHX key value 将一个值插入到已存在的列表头部 | |
10 | LRANGE key start stop 获取列表指定范畴内的元素 | |
11 | LREM key count value 移除列表元素 | |
12 | LSET key index value 通过索引设置列表元素的值 | |
13 | LTRIM key start stop 对一个列表进行修剪 (trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 | |
14 | RPOP key 移除列表的最初一个元素,返回值为移除的元素。 | |
15 | RPOPLPUSH source destination 移除列表的最初一个元素,并将该元素增加到另一个列表并返回 | |
16 | [RPUSH key value1 value2] 在列表中增加一个或多个值 | |
17 | RPUSHX key value 为已存在的列表增加值 |
正文完