redis-4-列表

作者: 打伞的Fish | 来源:发表于2018-06-14 20:03 被阅读2次

    通过这篇文章知道如下内容:

    • 如何利用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命
    令的客户端可以获取到弹出的值

    时间复杂度

    时间复杂度

    应用场景

    • 阻塞队列


      阻塞队列
      应用场景简洁版

    相关文章

      网友评论

        本文标题:redis-4-列表

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