Redis 列表详解

 Pala   2017-10-20 18:02   121 人阅读  0 条评论

redis中常用的列表命令

命令用例描述
rpushrpush key-name value [value ...]将一个或多个值推入列表的右端
lpushlpush key-name value [value ...]讲一个或多个值推入列表的左端
rpoprpop key-name移除并返回列表最右端的元素
lpoplpop key-name移除并返回列表最左端的元素
lindexlindex key-name offset返回列表中偏移量为offset的元素
lrangelrange key-name start end返回列表从start偏移量到end偏移量范围内的所有元素,其中偏移量为start和偏移量为end的元素也会包含在被返回的元素之内
ltrimltrim key-name start end 对列表进行修剪,只保留从start偏移量到end偏移量范围内的元素,其中偏移量为start和偏移量为end的元素也会被保留

redis中列表的推入和弹出操作代码示例

In [36]: conn.rpush('list-key','last')    # 写入数据
Out[36]: 1L    # 返回列表当前长度

In [37]: conn.lpush('list-key','first')
Out[37]: 2L

In [38]: conn.rpush('list-key','new last')
Out[38]: 3L

# 左端为开始,右端为结尾,
In [39]: conn.lrange('list-key',0,-1)
Out[39]: ['first', 'last', 'new last']

# 重复弹出左端的元素,按照从左到右的顺序获取列表的元素
In [40]: conn.lpop('list-key')
Out[40]: 'first'

In [41]: conn.lpop('list-key')
Out[41]: 'last'

In [42]: conn.lrange('list-key',0,-1)
Out[42]: ['new last']

# 同时推入多个元素
In [43]: conn.rpush('list-key','a','b','c')
Out[43]: 4L

In [44]: conn.lrange('list-key',0,-1)
Out[44]: ['new last', 'a', 'b', 'c']

# 从列表的左端删减指定数量的元素
In [46]: conn.ltrim('list-key',2,-1)
Out[46]: True

In [47]: conn.lrange('list-key',0,-1)
Out[47]: ['b', 'c']

redis阻塞式的列表弹出命令以及列表之间移动元素的命令

命令用例描述
blpopblpop key-name [key-name …] timeout从第一个非空列表中弹出卫浴最右端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现
brpopbrpop key-name [key-name…] timeout从第一个非空列表中弹出卫浴最右端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现
rpoplpushrpoplpush source-key dest-key从source-key列表中弹出位于最右端的元素,然后将这个元素推入dest-key列表的最左端,并向用户返回这个元素
brpoplpushbrpoplpush source-key dest-key timeout从source-key列表中弹出位于最右端的元素,然后将这个元素推入dest-key列表的最左端,并向用户返回这个元素;如果source-key为空,那么在timeout秒之内阻塞并等待可弹出的元素出现

redis列表的阻塞弹出命令以及元素移动命令代码示例

In [56]: conn.rpush('list','item1')
Out[56]: 1L

In [57]: conn.rpush('list','item2')
Out[57]: 2L

In [58]: conn.rpush('list2','item3')
Out[58]: 1L

# 阻塞弹出
In [59]: conn.brpoplpush('list2','list',1)
Out[59]: 'item3'

# 阻塞弹出,由于无数据,停止1s
In [60]: conn.brpoplpush('list2','list',1)

In [61]: conn.lrange('list',0,-1)
Out[61]: ['item3', 'item1', 'item2']

阻塞弹出命令和弹出并推入命令应用范围

最常见的用例就是消息传递(messaging)和任务队列(task queue)

相关文章:

Redis RDB方式数据备份与恢复

redis 持久化详解,RDB和AOF是什么?他们优缺点是什么?运行流程是什么?

redis 如何高效快速批量插入大量数据到redis中

Redis 列表详解

Redis 字符串详解

Redis 5种数据结构简介和对应的命令及代码示例


本文地址:http://chenxm.cc/post/435.html
版权声明:本文为原创文章,版权归 Pala 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?