通过链表结构可以模仿队列结构与堆栈结构;关于队列结构和堆栈结构可以查看【SPL 标准库专题(6)】Datastructures:SplStack & SplQueue
增
lpush key value1 value2 value3...
作用: 把值插入到链表头部
rpush key value1 value2 value3...
127.0.0.1:6379> rpush zimu a b c d e f
(integer) 6
作用: 把值插入到链接尾部
删
rpop key
作用: 返回并删除链表尾元素
lpop key
作用: 返回并删除链表头元素
lrem key count value
作用: 从 key 链表中删除 value 值
注: 删除 count 的绝对值个 value 后结束
Count > 0 从表头删除
Count < 0 从表尾删除
lrem key 2 b 从表头开始找 b, 找到就给删除, 删除 2 个;
lrem key -2 b 从表尾开始找 b, 找到就给删除, 删除 2 个;
改
ltrim key start stop
作用: 剪切 key 对应的链表, 切 [start,stop] 一段, 并把该段重新赋给 key
lindex key index
作用: 返回 index 索引上的值,
如 lindex key 2
llen key
作用: 计算链接表的元素个数
linsert key after|before search value
作用: 在 key 链表中寻找 ’search’, 并在 search 值之前 | 之后, 插入 value
注: 一旦找到一个 search 后, 命令就结束了, 因此不会插入多个 value
127.0.0.1:6379> linsert lb1 before c aa #在链表 lb1 的元素 c 前面插入 aa
rpoplpush source dest
作用: 从链表 source 的尾部拿出, 放在链表 dest 的头部, 并返回该单元值
场景: 双链表完成安全队列
业务逻辑:
1:Rpoplpush task bak
2: 接收返回值, 并做业务处理
3: 如果成功,rpop bak 清除任务. 如不成功, 下次从 bak 表里取任务
brpop/blpop key timeout
作用: 等待弹出 key 的尾 / 头元素,
Timeout 为等待超时时间
如果 timeout 为 0, 则一直等待
场景: 长轮询 Ajax, 在线聊天时, 能够用到
127.0.0.1:6379> brpop lb2 30 #30 秒内监听 lb2 队列, 一旦有插入新的队列元素就马上弹出, 并返回相应信息;
1) "lb2"
2) "222"
(8.55s)
查
lrange key start stop
作用: 返回链表中 [start ,stop] 中的元素
规律: 左数从 0 开始, 右数从 - 1 开始
lrange key 0 -1 查出全部链表结构