Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊) 一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)。
一、將一個或多個值插入到列表頭部 命令:lpush 格式:lpush key value1 [value2] ... 127.0.0.1:6379> lpush list_key 1 (integer) 1 127.0.0.1:6379> lpush list_key 2 3 4 (integer) 4 二、獲取列表指定范圍內(nèi)的元素 命令:lrange 格式:lrange key begin_index end_index 127.0.0.1:6379> lpush list_key 1 (integer) 1 127.0.0.1:6379> lpush list_key 2 3 4 (integer) 4 127.0.0.1:6379> lrange list_key 0 1 1) "4" 2) "3" 127.0.0.1:6379> lrange list_key 0 0 1) "4" 127.0.0.1:6379> lrange list_key 2 3 1) "2" 2) "1" 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "3" 3) "2" 4) "1" 三、將一個值插入到已存在的列表頭部 命令:lpushx 格式:lpushx key value 127.0.0.1:6379> del list_key (integer) 1 127.0.0.1:6379> lrange list_key 0 10 (empty list or set) 127.0.0.1:6379> lpushx list_key 1 (integer) 0 127.0.0.1:6379> lrange list_key 0 10 (empty list or set) 127.0.0.1:6379> lpush list_key 1 (integer) 1 127.0.0.1:6379> lrange list_key 0 10 1) "1" 127.0.0.1:6379> lpushx list_key 2 (integer) 2 127.0.0.1:6379> lrange list_key 0 10 1) "2" 2) "1" 四、將一個或多個值插入到列表尾部 命令:rpush 格式:rpush key value1 [value2] ... 127.0.0.1:6379> lrange list_key 0 10 1) "2" 2) "1" 127.0.0.1:6379> lpush list_key 3 (integer) 3 127.0.0.1:6379> lrange list_key 0 10 1) "3" 2) "2" 3) "1" 127.0.0.1:6379> rpush list_key 4 (integer) 4 127.0.0.1:6379> lrange list_key 0 10 1) "3" 2) "2" 3) "1" 4) "4" 五、將一個值插入到已存在的列表尾部 命令:rpushx 格式:rpushx key value 127.0.0.1:6379> del list_key (integer) 1 127.0.0.1:6379> lrange list_key 0 10 (empty list or set) 127.0.0.1:6379> rpushx list_key 1 (integer) 0 127.0.0.1:6379> lrange list_key 0 10 (empty list or set) 127.0.0.1:6379> rpush list_key 1 (integer) 1 127.0.0.1:6379> lrange list_key 0 10 1) "1" 127.0.0.1:6379> rpushx list_key 2 (integer) 2 127.0.0.1:6379> lrange list_key 0 10 1) "1" 2) "2" 六、移出并獲取列表的第一個元素 命令:lpop 格式:lpop key 127.0.0.1:6379> del list_key (integer) 1 127.0.0.1:6379> lpush list_key 1 2 3 4 5 (integer) 5 127.0.0.1:6379> lrange list_key 0 10 1) "5" 2) "4" 3) "3" 4) "2" 5) "1" 127.0.0.1:6379> lpop list_key "5" 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "3" 3) "2" 4) "1" 七、移出并獲取列表的最后一個元素 命令:rpop 格式:rpop key 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "3" 3) "2" 4) "1" 127.0.0.1:6379> rpop list_key "1" 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "3" 3) "2" 八、獲取列表長度 命令:llen 格式:llen key 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "3" 3) "2" 127.0.0.1:6379> llen list_key (integer) 3 127.0.0.1:6379> lpush list_key 5 6 7 (integer) 6 127.0.0.1:6379> lrange list_key 0 10 1) "7" 2) "6" 3) "5" 4) "4" 5) "3" 6) "2" 127.0.0.1:6379> llen list_key (integer) 6 九、通過索引獲取列表中的元素 命令:lindex 格式:lindex key index 127.0.0.1:6379> lrange list_key 0 10 1) "7" 2) "6" 3) "5" 4) "4" 5) "3" 6) "2" 127.0.0.1:6379> lindex list_key 4 "3" 127.0.0.1:6379> lindex list_key 0 "7" 127.0.0.1:6379> lindex list_key 7 (nil) 127.0.0.1:6379> lindex list_key 6 (nil) 127.0.0.1:6379> lindex list_key 5 "2" 十、移出并獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止 命令:blpop 格式:blpop key1 [key2] timeout 對于有元素的list: 127.0.0.1:6379> lpush l1 1 2 3 4 (integer) 4 127.0.0.1:6379> lpush l2 a b c d (integer) 4 127.0.0.1:6379> lrange l1 0 10 1) "4" 2) "3" 3) "2" 4) "1" 127.0.0.1:6379> lrange l2 0 10 1) "d" 2) "c" 3) "b" 4) "a" 127.0.0.1:6379> blpop l1 l2 1 1) "l1" 2) "4" 127.0.0.1:6379> blpop l1 l2 1 1) "l1" 2) "3" 127.0.0.1:6379> blpop l1 l2 1 1) "l1" 2) "2" 127.0.0.1:6379> blpop l1 l2 1 1) "l1" 2) "1" 127.0.0.1:6379> blpop l1 l2 1 1) "l2" 2) "d" 127.0.0.1:6379> blpop l1 l2 1 1) "l2" 2) "c" 127.0.0.1:6379> blpop l1 l2 1 1) "l2" 2) "b" 127.0.0.1:6379> blpop l1 l2 1 1) "l2" 2) "a" 127.0.0.1:6379> blpop l1 l2 1 //1s后 (nil) (1.05s) 對于無元素的list: 127.0.0.1:6379> blpop l1 l2 1 //1s后 (nil) (1.06s) 127.0.0.1:6379> blpop l1 l2 10 //另一客戶端調(diào)用 lpush l1 1 1) "l1" 2) "1" (1.54s) 127.0.0.1:6379> blpop l1 l2 0 //一直等待 十一、移出并獲取列表的最后一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止 命令:brpop 格式:brpop key1 [key2] timeout 操作與blpop相同,此處略 十二、移除列表的最后一個元素,并將該元素添加到另一個列表并返回 命令:rpoplpush 格式:rpoplpush source target 127.0.0.1:6379> del l1 l2 (integer) 1 127.0.0.1:6379> lpush l1 1 2 3 (integer) 3 127.0.0.1:6379> lrange l1 0 10 1) "3" 2) "2" 3) "1" 127.0.0.1:6379> lrange l2 0 10 (empty list or set) 127.0.0.1:6379> rpoplpush l1 l2 "1" 127.0.0.1:6379> lrange l1 0 10 1) "3" 2) "2" 127.0.0.1:6379> lrange l2 0 10 1) "1" 127.0.0.1:6379> rpoplpush l1 l2 "2" 127.0.0.1:6379> rpoplpush l1 l2 "3" 127.0.0.1:6379> rpoplpush l1 l2 (nil) 127.0.0.1:6379> lrange l1 0 10 (empty list or set) 127.0.0.1:6379> lrange l2 0 10 1) "3" 2) "2" 3) "1" 十三、從列表中彈出一個值,將彈出的元素插入到另外一個列表中并返回它; 如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止 命令:brpoplpush 格式:brpoplpush source target timeout source有元素時: 127.0.0.1:6379> del l1 l2 (integer) 0 127.0.0.1:6379> lpush l1 1 2 3 (integer) 3 127.0.0.1:6379> lrange l1 0 10 1) "3" 2) "2" 3) "1" 127.0.0.1:6379> lrange l2 0 10 (empty list or set) 127.0.0.1:6379> brpoplpush l1 l2 1 "1" 127.0.0.1:6379> lrange l1 0 10 1) "3" 2) "2" 127.0.0.1:6379> lrange l2 0 10 1) "1" 127.0.0.1:6379> brpoplpush l1 l2 1 "2" 127.0.0.1:6379> brpoplpush l1 l2 1 "3" 127.0.0.1:6379> brpoplpush l1 l2 1 //1s后 (nil) (1.06s) 127.0.0.1:6379> lrange l1 0 10 (empty list or set) 127.0.0.1:6379> lrange l2 0 10 1) "3" 2) "2" 3) "1" source無元素時,與blpop brpop類似 十四、在列表的第一個指定元素pivot前或者后插入元素value 命令:linsert 格式:linsert key before|after pivot value 127.0.0.1:6379> lpush list_key 1 2 1 3 1 4 (integer) 6 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "1" //第一個指定元素"1" 3) "3" 4) "1" 5) "2" 6) "1" 127.0.0.1:6379> linsert list_key after 1 5 (integer) 7 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "1" //第一個指定元素"1" 3) "5" 4) "3" 5) "1" 6) "2" 7) "1" 127.0.0.1:6379> linsert list_key before 1 6 (integer) 8 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "6" 3) "1" //第一個指定元素"1" 4) "5" 5) "3" 6) "1" 7) "2" 8) "1" 十五、從列表頭部開始,移除count個指定元素value 命令:lrem 格式:lrem key count value 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "6" 3) "1" 4) "5" 5) "3" 6) "1" 7) "2" 8) "1" 127.0.0.1:6379> lrem list_key 1 1 (integer) 1 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "6" 3) "5" 4) "3" 5) "1" 6) "2" 7) "1" 127.0.0.1:6379> lrem list_key 2 1 (integer) 2 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "6" 3) "5" 4) "3" 5) "2" 127.0.0.1:6379> lrem list_key 1 1 (integer) 0 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "6" 3) "5" 4) "3" 5) "2" 十六、通過索引設(shè)置列表元素的值 命令:lset 格式:lset key index value 127.0.0.1:6379> rpush list_key 1 2 3 4 5 (integer) 5 127.0.0.1:6379> lrange list_key 0 10 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 127.0.0.1:6379> lset list_key 0 10 OK 127.0.0.1:6379> lrange list_key 0 10 1) "10" 2) "2" 3) "3" 4) "4" 5) "5" 127.0.0.1:6379> lset list_key 3 10 OK 127.0.0.1:6379> lrange list_key 0 10 1) "10" 2) "2" 3) "3" 4) "10" 5) "5" 十七、對一個列表進行修剪,刪除指定下標(biāo)區(qū)間[start,stop]之外的元素 命令:ltrim 格式:ltrim key start stop 127.0.0.1:6379> del list_key (integer) 1 127.0.0.1:6379> rpush list_key 1 2 3 4 5 6 7 8 9 (integer) 9 127.0.0.1:6379> lrange list_key 0 10 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "6" 7) "7" 8) "8" 9) "9" 127.0.0.1:6379> ltrim list_key 3 6 OK 127.0.0.1:6379> lrange list_key 0 10 1) "4" 2) "5" 3) "6" 4) "7"
|
|