• Redis List 命令技巧


    1.实现栈的功能(先进后出)

    lpush + lpop = stack

    127.0.0.1:6379> lpush mylist 1 2 3 4 5
    (integer) 5
    127.0.0.1:6379> lpop mylist
    "5"
    127.0.0.1:6379> lpop mylist
    "4"
    127.0.0.1:6379> lrange mylist 0 -1
    1) "3"
    2) "2"
    3) "1"

    2. 实现队列功能

    lpush + rpop   = queue

    127.0.0.1:6379> lpush mylist 4 5
    (integer) 5
    127.0.0.1:6379> lrange mylist 0 -1
    1) "5"
    2) "4"
    3) "3"
    4) "2"
    5) "1"
    127.0.0.1:6379> rpop mylist
    "1"
    127.0.0.1:6379> rpop mylist
    "2"
    127.0.0.1:6379> lrange mylist 0 -1
    1) "5"
    2) "4"
    3) "3"

    3. 实现有限数据集合

    lpush + ltrim = capped collection

    ltrim [ltrim key  range_l range_r]:保留区域类的元素,其他的删除

    127.0.0.1:6379> rpush mylist 2 1
    (integer) 5
    127.0.0.1:6379> lrange mylist 0 -1
    1) "5"
    2) "4"
    3) "3"
    4) "2"
    5) "1"
    127.0.0.1:6379> ltrim mylist 2 3
    OK
    127.0.0.1:6379> lrange mylist 0 -1
    1) "3"
    2) "2"

    4.实现消息队列

    lpush + brpop = message queue

    Redis Brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

    操作命令   BRPOP list  timeout

    brpop mylist 10

    返回值

    假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

    127.0.0.1:6379> lpush mylist 1 2 3 4 5
    (integer) 5
    127.0.0.1:6379> brpop mylist 10
    1) "mylist"
    2) "1"
    127.0.0.1:6379> brpop mylist 100
    1) "mylist"
    2) "2"
    127.0.0.1:6379> brpop mylist 10000
    1) "mylist"
    2) "3"
    127.0.0.1:6379> brpop mylist 10
    1) "mylist"
    2) "4"
    127.0.0.1:6379> brpop mylist 10
    1) "mylist"
    2) "5"
    127.0.0.1:6379> brpop mylist 10
    (nil)
    (10.05s)
  • 相关阅读:
    bzoj1093[ZJOI2007]最大半连通子图(tarjan+拓扑排序+dp)
    tarjan强连通分量模板(pascal)
    二分图最小顶点覆盖数=最大匹配数的证明
    poj3041 Asteroids(二分图最小顶点覆盖、二分图匹配)
    bzoj4196[Noi2015]软件包管理器
    AEAI Portal 权限体系说明
    未来70%的人类将会失业
    工作中高效学习的方法
    如何正确的做事
    你真的会沟通吗? --下部
  • 原文地址:https://www.cnblogs.com/haoprogrammer/p/11024821.html
Copyright © 2020-2023  润新知