• Redis数据结构:列表


    redis的列表是双端的,是有序的。

     双端的,意味着可以左边压入,右边弹出,这就是队列。左边压入,左边弹出,这就是栈。

    左侧压入(LPUSH)

    1. 使用LPUSH可以实现左侧压入

    LPUSH  mylist  "one"

    当然可以同时压入多个元素

    LPUSH  mylist  "one"  "two"  "three" 

    如果mylist不存在,会创建一个list 

    2. LPUSHX只有存在list才会压入,不支持批量压入

    LPUSHX  mylist  "one" 

    右侧压入(RPUSH)

    1. 使用RPUSH可以右侧压入

    RPUSH  mylist  "one"

    当然可以同时压入多个元素

    RPUSH  mylist  "one"  "two"  "three"  

     如果mylist不存在,会创建一个list 

    2. RPUSHX只有存在list才会压入,不支持批量压入

    RPUSHX  mylist "one"

    左侧弹出(LPOP)

    LPOP  mylist

    -- 存在则返回值,否则返回nil

    右侧弹出(RPOP)

    RPOP  mylist

    -- 存在则返回值,否则返回nil

    右侧弹出,左侧压入(RPOPLPUSH)

    RPOPLPUSH用来从list1的右侧弹出元素压入list2的左端 

    RPOPLPUSH  list1  list2

    list1 和 list2可以是同一个list

    获取列表元素数量(LLEN)

    使用LLEN获取列表元素的个数 

    LLEN  mylist

    -- 3

    获取指定位置的元素(LINDEX)

    使用LINDEX可以获取指定位置的元素,0~len-1, -len~-1 

    LINDEX  mylist  0

    -- 第一个元素

    LINDEX  mylist  -1

    -- 最后一个元素

    获取指定范围的元素(LRANGE)

    使用LRANGE获取指定范围的元素,支持负索引

    LRANGE  key  start  end

    例如,获取1-3个元素

    LRANGE  mylist  0  2 

    设置指定位置的元素(LSET)

    LSET可以设置指定位置的元素

    LSET  key  index  val

    例如,对mylist的第一个元素,更新为book

    LSET  mylist  0  "book" 

    在指定元素的前面/后面插入新的元素(LINSERT)

    在two前面插入one,后面插入three 

    LINSERT  mylist  BEFORE  "two"  "one"

    LINSERT  mylist  AFTER  "two"  "three" 

    保留指定范围的元素(LTRIM)

    如果只保留指定范围的元素,删除其他的元素,可以使用LTRIM 

    LTRIM  key  start  end

    例如保留前两个元素

    LTRIM  mylist  0  1 

    移除所有、指定个数的元素(LREM)

    1. 移除所有匹配项 

    LREM  key  0  val

    例如删除所有的one

    LREM  mylist  0  "one" 

    2. 从左边开始,删除指定个数的元素

    从左边开始,删除最多2两个one 

    LREM  mylist  2  "one"

    3. 从右边开始,删除指定个数的元素 

    从右边开始,删除最多3两个one 

    LREM  mylist  -3  "one"

    阻塞式获取元素(BLPOP, BRPOP, BRPOPLPUSH)

    1. 使用BLPOP可以在没有元素的时候阻塞,直到可用 或超时

    BLPOP  mylist  5

    要么直接返回值,要么阻塞等待,直到可用或5s超时

    2. BRPOP 可以在没有元素的时候阻塞,直到可用 或超时,方向是右端弹出

    BRPOP  mylist  10

    要么直接返回值,要么阻塞等待,直到可用或10s超时 

    3. BRPOPLPUSH,阻塞式等待元素可用或超时

    作用与RPOPLPUSH类似,区别在于阻塞效果

    BRPOPLPUSH  mylist1  mylist2  10

  • 相关阅读:
    for循环,for of, forEach, map, for in
    在金融行业做数据产品经理是什么体验
    VuePress构建一个文档管理网站
    微信小程序健康预约检查管理系统的开发与实现
    【题型总结】使用双指针+哈希表寻找符合某种条件的字符串/数字的个数
    自编码器(Autoencoder)基本原理与模型实现
    [管理与领导-123]:IT人看清职场中的隐性规则 - 19 - 管理者激发团队拿到结果的方式和层次不同,你愿意跟随哪一种类型的领导?
    数据仓库中基本概念
    女孩姓管取独特的名字大全
    【Azure 环境】Azure Resource Graph Explorer 中实现动态数组数据转换成多行记录模式 - mv-expand
  • 原文地址:https://blog.csdn.net/Day_and_Night_2017/article/details/126474932