redis-4-列表
2018-06-14 本文已影响2人
打伞的Fish
通过这篇文章知道如下内容:
- 如何利用redis列表构造阻塞队列
- 懂得如何对列表进行增删改查
列表常规操作
列表操作类型添加
-
从右边插入
rpush key value [value ...]
lrange0-1命令可以从左到右获取列表的所有元素:
lrange listkey 0 -1
-
向某个元素前或者后插入元素
linsert key before|after pivot value
b前面插入python
linsert listkey before b python 返回的是列表的长度
查询
-
查找
索引注意点:
第一, 索引下标从左到右分别是0到N-1, 但是从右到左分别是-1到-N。
第二, lrange中的end选项包含了自身lrange key start end 查找范围的 lindex key index 查找指定的下标
删除
-
删除
lpop key 左侧弹出
-
删除指定元素
lrem key count value
lrem命令会从列表中找到等于value的元素进行删除, 根据count的不同
分为三种情况:
·count>0, 从左到右, 删除最多count个元素。
·count<0, 从右到左, 删除最多count绝对值个元素。
·count=0, 删除所有
-
修剪列表
保留列表listkey第2个到第4个元素ltrim listkey 1 3
修改
lset key index newValue lset listkey 2 python
列表listkey中的第3个元素设置为python
阻塞操作
blpop key [key ...] timeout
列表为空: 如果timeout=3, 那么客户端要等到3秒后返回, 如果timeout=0, 那么客户端一直阻塞等下去,如果阻塞期间添加了元素会立即返回
列表不空会立即返回
注意点:
1、如果是多个键, 那么brpop会从左至右遍历键, 一旦有一个键能弹出元素, 客户端立即返回:
brpop list:1 list:2 list:3 0
2、如果多个客户端对同一个键执行brpop, 那么最先执行brpop命
令的客户端可以获取到弹出的值
时间复杂度
时间复杂度应用场景
-
阻塞队列
阻塞队列
应用场景简洁版