推荐链接:
总结——》【Java】
总结——》【Mysql】
总结——》【Redis】
总结——》【Spring】
总结——》【SpringBoot】
总结——》【MyBatis、MyBatis-Plus】
Redis——》数据类型:List(列表)
- 一、简介
- 二、应用场景
- 三、底层结构
- 四、操作示例
- (1)增
- (2)删
- (3)改
- (4)查
- 五、操作组合
一、简介
列表(list)类型是用来存储多个有序的字符串,一个列表最多可以存储2^32-1个元素。
二、应用场景
消息队列,文章列表
三、底层结构
ziplist(压缩列表)、linkedlist(链表)
四、操作示例
(1)增
语法 | 示例 | 描述 |
---|---|---|
lpush key value1 [value2] | lpush k1 1 2 3 | 将一个或多个值插入到列表头部 |
lpushx key value | lpushx k1 1 | 将一个或多个值插入到已存在的列表头部 |
rpush key value1 [value2] | rpush k1 4 5 | 将一个或多个值插入到列表尾部 |
rpushx key value | rpushx k1 4 | 将一个或多个值插入到已存在的列表尾部 |
lset key index value | lset k1 0 0 | 通过索引设置列表元素的值 |
linsert key BEFORE|AFTER pivot value | linsert k1 before 6 a | 在列表的元素前或者后插入元素 |
(2)删
语法 | 示例 | 描述 |
---|---|---|
lrem key count value | lrem k1 1 1 | 移除列表元素 |
lpop key | lpop k1 | 移出并获取列表的第一个元素 |
rpop key | rpop k1 | 移除并获取列表最后一个元素 |
blpop key1 [key2 ] timeout | blpop k1 0 | 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
brpop key1 [key2 ] timeout | brpop k1 0 | 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
rpopplush source destination | rpopplush k1 k2 | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 |
brpopplush source destination | brpopplush k1 k2 | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
ltrim key start stop | ltrim k1 1 3 | 只保留指定区间内的元素,删除不在指定区间之内的元素 |
(3)改
见增
(4)查
语法 | 示例 | 描述 |
---|---|---|
lindex key index | lindex k1 0 | 通过索引获取列表中的元素 |
llen key | llen k1 | 获取列表长度 |
lrange key start stop | lrange k1 0 -1 | 获取列表指定范围内的元素 |
help @list
# 从左边放入
lpush k1 a b c d e f
# 从右边放入
rpush k2 a b c d e f
# 从左边取出
lpop k1
# 从右边取出
rpop k2
# 从0开始
lrange k1 0 -1
# 查询下标为2的值
lindex k1 2
# 查询最后一个值
lindex k1 -1
# 设置下标3的值
lset k1 3 xxxx
lpush k3 1 a 2 b 3 a 4 a
# count为正数,从前面,移除2个a
lrem k3 2 a
# count为负数,从后面,移除2个a
lrem k3 -2 a
# 在值为6的后边插入a
linsert k3 after 6 a
# 在值为3的前边插入a
linsert k3 before 6 a
# 有多少个元素
llen k3
help ltrim
#两端数据删除
五、操作组合
- lpush+lpop=Stack(栈)
- lpush+rpop=Queue(队列)
- lpush+ltrim=Capped Collection(有限集合)
- lpush+brpop=Message Queue(消息队列)