Redis列表操作
列表类似于双向链表结构,可从序列两端推入或者弹出元素。
(列表常用命令)
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)