美文网首页redis学习
redis的list类型(链表结构)

redis的list类型(链表结构)

作者: 程序员小饭 | 来源:发表于2019-07-22 15:57 被阅读0次

    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(task); //处理取出的task元素

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

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

    }

    }

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

    9:brpop ,blpop key timeout

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

    Timeout为等待超时时间

    如果timeout为0,则一直等待

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

    相关文章

      网友评论

        本文标题:redis的list类型(链表结构)

        本文链接:https://www.haomeiwen.com/subject/rarwlctx.html