前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis的list类型(链表结构)

redis的list类型(链表结构)

作者头像
程序员小饭
发布2020-09-07 15:20:04
7870
发布2020-09-07 15:20:04
举报
文章被收录于专栏:golang+php

1:插入删除命令

lpush key value 把值插入到链接头部(左边)
lpop key 返回并删除链表头元素(左边)
rpush key value 把值插入到链接尾部(右边)
rpop key 返回并删除链表尾元素(右边)

2:lrange key start stop

返回链表中[start ,stop]中的元素

规律: 左数从0开始,右数从-1开始

小技巧:如果想查询出链表中所有元素但是又不知道链表的长度,可以用lrange link 0 -1来查询

3:lrem key count value

从key链表中删除 value值

注: 删除count的绝对值个value后结束

Count>0 从表头删除

Count<0 从表尾删除

lrem效果演示

4:ltrim key start stop

剪切key对应的链接,切[start,stop]一段,并把该段重新赋给key

5: lindex key index

返回index索引上的值

6:llen key

计算链接表的元素个数

7:linsert key after|before search value

作用: 在key链表中寻找’search’,并在search值之前|之后,.插入value

注: 一旦找到一个search后,命令就结束了,因此不会插入多个value,如果找不到search,不做任何处理

linsert key after|before search value演示

linsert key after|before search value演示

8:rpoplpush source dest

作用: 把source的尾部拿出,放在dest的头部,

并返回 该单元值

注意:没有lpoprpush命令

场景: task + bak 双链表完成安全队列

命令其实很简单,下面写一段伪代码,基本就明白优势了

task中存在的是需要处理的对象

while($task = rpoplpush(task,bak)){ //取出task中的元素并且放到dest中

result = deal(
result = deal(

task); //处理取出的task元素

if($result){ //如果处理成功

lpop(bak); //删除掉bak中刚取出的元素

}

}

这样在bak队列中留下的元素就是未处理成功的元素,需要进行二次处理

9:brpop ,blpop key timeout

作用:等待弹出key的尾/头元素,

Timeout为等待超时时间

如果timeout为0,则一直等待

场景: 长轮询Ajax,在线聊天时,能够用到

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1:插入删除命令
  • 2:lrange key start stop
  • 3:lrem key count value
  • 4:ltrim key start stop
  • 5: lindex key index
  • 6:llen key
  • 7:linsert key after|before search value
  • 8:rpoplpush source dest
  • 9:brpop ,blpop key timeout
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档