redis-4-列表

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

  • 如何利用redis列表构造阻塞队列
  • 懂得如何对列表进行增删改查

列表常规操作

redis-4-列表_第1张图片
列表操作类型

添加

  • 从右边插入

    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-列表_第2张图片
时间复杂度

应用场景

  • 阻塞队列


    redis-4-列表_第3张图片
    阻塞队列

    redis-4-列表_第4张图片
    应用场景简洁版

你可能感兴趣的:(redis-4-列表)