列表類似於雙向鏈表結構,可從序列兩端推入或者彈出元素。
(列表常用命令)
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)