网站开发要学哪些,网站更新 缓存,wordpress卡顿,网页设计网站免费一#xff0c;List(列表) 1#xff0c;所应用场景
list实际上是一个链表#xff0c;before Node after , left, right 都可以插入值如果key不存在#xff0c;则创建新的链表如果key存在#xff0c;新增内容如果移除了所有值#xff0c;空链表#xff0c;也代表不存在在…一List(列表) 1所应用场景
list实际上是一个链表before Node after , left, right 都可以插入值如果key不存在则创建新的链表如果key存在新增内容如果移除了所有值空链表也代表不存在在两边插入或者改动值效率最高修改中间元素效率相对较低应用消息排队消息队列Lpush Rpop,栈Lpush Lpop 2命令 LPUSH/RPUSH key value1[value2..] 从左边/右边向列表中PUSH值(一个或者多个)。
LRANGE key start end 获取list 起止元素索引从左往右 递增
LPUSHX/RPUSHX key value 向已存在的列名中push值一个或者多个
LINSERT key BEFORE|AFTER pivot value 在指定列表元素的前/后 插入value
LLEN key 查看列表长度
LINDEX key index 通过索引获取列表元素
LSET key index value 通过索引为元素设值
LPOP/RPOP key 从最左边/最右边移除值 并返回
RPOPLPUSH source destination 将列表的尾部(右)最后一个值弹出并返回然后加到另一个列表的头部
LTRIM key start end 通过下标截取指定范围内的列表
LREM key count value List中是允许value重复的 count 0从头部开始搜索 然后删除指定的value 至多删除count个 count 0从尾部开始搜索… count 0删除列表中所有的指定value。
BLPOP/BRPOP key1[key2] timout 移出并获取列表的第一个/最后一个元素 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
BRPOPLPUSH source destination timeout 和RPOPLPUSH功能相同如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 3案例
---------------------------LPUSH---RPUSH---LRANGE--------------------------------127.0.0.1:6379 LPUSH mylist k1 # LPUSH mylist{1}
(integer) 1
127.0.0.1:6379 LPUSH mylist k2 # LPUSH mylist{2,1}
(integer) 2
127.0.0.1:6379 RPUSH mylist k3 # RPUSH mylist{2,1,3}
(integer) 3
127.0.0.1:6379 get mylist # 普通的get是无法获取list值的
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379 LRANGE mylist 0 4 # LRANGE 获取起止位置范围内的元素
1) k2
2) k1
3) k3
127.0.0.1:6379 LRANGE mylist 0 2
1) k2
2) k1
3) k3
127.0.0.1:6379 LRANGE mylist 0 1
1) k2
2) k1
127.0.0.1:6379 LRANGE mylist 0 -1 # 获取全部元素
1) k2
2) k1
3) k3---------------------------LPUSHX---RPUSHX-----------------------------------127.0.0.1:6379 LPUSHX list v1 # list不存在 LPUSHX失败
(integer) 0
127.0.0.1:6379 LPUSHX list v1 v2
(integer) 0
127.0.0.1:6379 LPUSHX mylist k4 k5 # 向mylist中 左边 PUSH k4 k5
(integer) 5
127.0.0.1:6379 LRANGE mylist 0 -1
1) k5
2) k4
3) k2
4) k1
5) k3---------------------------LINSERT--LLEN--LINDEX--LSET----------------------------127.0.0.1:6379 LINSERT mylist after k2 ins_key1 # 在k2元素后 插入ins_key1
(integer) 6
127.0.0.1:6379 LRANGE mylist 0 -1
1) k5
2) k4
3) k2
4) ins_key1
5) k1
6) k3
127.0.0.1:6379 LLEN mylist # 查看mylist的长度
(integer) 6
127.0.0.1:6379 LINDEX mylist 3 # 获取下标为3的元素
ins_key1
127.0.0.1:6379 LINDEX mylist 0
k5
127.0.0.1:6379 LSET mylist 3 k6 # 将下标3的元素 set值为k6
OK
127.0.0.1:6379 LRANGE mylist 0 -1
1) k5
2) k4
3) k2
4) k6
5) k1
6) k3---------------------------LPOP--RPOP--------------------------127.0.0.1:6379 LPOP mylist # 左侧(头部)弹出
k5
127.0.0.1:6379 RPOP mylist # 右侧(尾部)弹出
k3---------------------------RPOPLPUSH--------------------------127.0.0.1:6379 LRANGE mylist 0 -1
1) k4
2) k2
3) k6
4) k1
127.0.0.1:6379 RPOPLPUSH mylist newlist # 将mylist的最后一个值(k1)弹出加入到newlist的头部
k1
127.0.0.1:6379 LRANGE newlist 0 -1
1) k1
127.0.0.1:6379 LRANGE mylist 0 -1
1) k4
2) k2
3) k6---------------------------LTRIM--------------------------127.0.0.1:6379 LTRIM mylist 0 1 # 截取mylist中的 0~1部分
OK
127.0.0.1:6379 LRANGE mylist 0 -1
1) k4
2) k2# 初始 mylist: k2,k2,k2,k2,k2,k2,k4,k2,k2,k2,k2
---------------------------LREM--------------------------127.0.0.1:6379 LREM mylist 3 k2 # 从头部开始搜索 至多删除3个 k2
(integer) 3
# 删除后mylist: k2,k2,k2,k4,k2,k2,k2,k2127.0.0.1:6379 LREM mylist -2 k2 #从尾部开始搜索 至多删除2个 k2
(integer) 2
# 删除后mylist: k2,k2,k2,k4,k2,k2---------------------------BLPOP--BRPOP--------------------------mylist: k2,k2,k2,k4,k2,k2
newlist: k1127.0.0.1:6379 BLPOP newlist mylist 30 # 从newlist中弹出第一个值mylist作为候选
1) newlist # 弹出
2) k1
127.0.0.1:6379 BLPOP newlist mylist 30
1) mylist # 由于newlist空了 从mylist中弹出
2) k2
127.0.0.1:6379 BLPOP newlist 30
(30.10s) # 超时了127.0.0.1:6379 BLPOP newlist 30 # 我们连接另一个客户端向newlist中push了test, 阻塞被解决。
1) newlist
2) test
(12.54s)Redis列表是简单的字符串列表按照插入顺序排序。你可以添加一个元素到列表的头部左边或者尾部右边 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。