【redis专题(3)】命令语法介绍之list

经过链表结构能够模仿队列结构与堆栈结构;关于队列结构和堆栈结构能够查看 【SPL标准库专题(6)】Datastructures:SplStack & SplQueuesegmentfault

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

做用: 把值插入到连接尾部code

rpop key

做用: 返回并删除链表尾元素索引

lpop key

做用: 返回并删除链表头元素队列

lrem key count value

做用: 从key链表中删除 value值
注: 删除count的绝对值个value后结束
Count > 0 从表头删除
Count < 0 从表尾删除rem

lrem key 2 b 从表头开始找b,找到就给删除,删除2个;
lrem key -2 b 从表尾开始找b,找到就给删除,删除2个;get

ltrim key start stop

做用: 剪切key对应的链表,切[start,stop]一段,并把该段从新赋给keyast

lindex key index

做用: 返回index索引上的值,
如 lindex key 2im

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 查出所有链表结构

相关文章
相关标签/搜索