列表类似于双向链表结构,可从序列两端推入或者弹出元素。
(列表常用命令)
RPUSH : RPUSH key-name value [value1 value2,...] ------------将一个或多个值推入列表右端
LPUSH : LPUSH key-name value [value1 value2,...] ------------将一个或多个值推入列表左端
RPOP : RPOP key-name----------移除并返回列表最右端元素
LPOP :LPOP key-name----------移除并返回列表最左端元素
LINDEX : LINDEX key-name offset --------------返回列表中偏移量为offset的元素
LRANGE : LRANGE key-name start end -------------返回列表中偏移量从start到end范围内的元素
LTRIM : LTRIM key-name start end ----------------对列表进行修剪,只保留偏移量从start到end范围内的元素
>>> import redis
>>> conn = redis.Redis(host='192.168.146.129',port=6379,db=0)
>>> conn.rpush('list-key','value1','value2','value3')
3L
>>> conn.lpush('list-key','value3','value4')
5L
>>> conn.lrange('list-key',0,-1)
['value4', 'value3', 'value1', 'value2', 'value3']
>>> conn.lpop('list-key')
'value4'
>>> conn.rpop('list-key')
'value3'
>>> conn.lrange('list-key',0,-1)
['value3', 'value1', 'value2']
>>> conn.ltrim('list-key',1,-1)
True
>>> conn.lrange('list-key',0,-1)
['value1', 'value2']
(阻塞式列表弹出命令以及在列表之间移动元素的命令) B ----BLOCK
BLPOP : BLPOP key-name [key-name ...] timeout ----从第一个非空列表中弹出位于最左端的元素,或者在time-out秒之内阻塞等待可弹出的元素出现
BRPOP : BRPOP key-name [key-name ...] timeout ----从第一个非空列表中弹出位于最右端的元素,或者在time-out秒之内阻塞等待可弹出的元素出现
RPOPLPUSH : RPOPLPUSH source-key dest-key ----------从soure-key 列表中弹出最右端的元素,然后将这个元素推入dest-key列表的最左端,并向用户返回这个元素
BRPOPLPUSH : BRPOPLPUSH source-key dest-key timeout----------从soure-key 列表中弹出最右端的元素,然后将这个元素推入dest-key列表的最左端,并向用户返回这个元素;如果source-key为空,那么在timeout秒之内阻塞并等待可弹出的元素出现
>>> conn.rpush('list','item1')
1L
>>> conn.rpush('list','item2')
2L
>>> conn.rpush('list2','item3')
1L
>>> conn.brpoplpush('list2','list',1)
'item3'
>>> conn.brpoplpush('list2','list',1)
>>> conn.lrange('list',0,-1)
['item3', 'item1', 'item2']
>>> conn.brpoplpush('list2','list',1)
>>> conn.brpoplpush('list','list2',1)
'item2'
>>> conn.blpop(['list','list2'],1)
('list', 'item3')
>>> conn.blpop(['list','list2'],1)
('list', 'item1')
>>> conn.blpop(['list','list2'],1)
('list2', 'item2')
>>> conn.blpop(['list','list2'],1)