zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    关于Table.Compute("Sum(qty)","XXX")的坑
    转载:window.open传值
    一些有用的SQL语句
    VS调试的时候也会锁定SQL对象
    关于数据中时间的坑
    那些年踩过的坑
    一段SQL
    关于下载的问题
    download excle的幾個問題的解決
    《浪潮之巅》读书笔记——第10章 惠普
  • 原文地址:https://www.cnblogs.com/haoprogrammer/p/11024821.html
Copyright © 2011-2022 走看看