命令 | 含義 | 時間複雜度 |
---|---|---|
lrange | 獲取列表指定索引範圍的全部item | O(S+N),S 爲偏移量 start,N 爲指定區間內元素的數量。 |
lpush、rpush | 從列表左/右側插入1-N個值 | O(1) |
lpop、rpop | 從列表左/右側彈出1個值 | O(1) |
linsert | 在list指定的值前/後插入newValue | O(N), N 爲尋找 pivot 過程當中通過的元素數量。 |
lrem | 從列表中刪除value相等的項 | O(N), N 爲列表的長度。 |
ltrim | 按照索引範圍修剪列表 | O(N),N 爲被移除的元素的數量。 |
lindex | 獲取列表指定索引的item | O(N), N 爲到達下標 index 過程當中通過的元素數量。所以,對列表的頭元素和尾元素執行 LINDEX 命令,複雜度爲O(1)。 |
llen | 獲取列表長度 | O(1) |
lset | 設置列表指定索引值爲newValue | 對頭元素或尾元素進行 LSET 操做,複雜度爲 O(1)。其餘狀況下,爲 O(N), N 爲列表的長度。 |
a - b - c - d - e - f
索引從左到右 0 ~ 5
索引從右到左 -1 ~ -6html
127.0.0.1:6379> rpush listkey a b c d e f (integer) 6 127.0.0.1:6379> lrange listkey 0 -1 1) "a" 2) "b" 3) "c" 4) "d" 5) "e" 6) "f" 127.0.0.1:6379> lrange listkey 0 2 1) "a" 2) "b" 3) "c" 127.0.0.1:6379> lrange listkey 1 -2 1) "b" 2) "c" 3) "d" 4) "e"
127.0.0.1:6379> lpush listkey c b a (integer) 3 127.0.0.1:6379> lrange listkey 0 -1 1) "a" 2) "b" 3) "c" 127.0.0.1:6379> rpush listkey c b a (integer) 6 127.0.0.1:6379> lrange listkey 0 -1 1) "a" 2) "b" 3) "c" 4) "c" 5) "b" 6) "a"
127.0.0.1:6379> lrange listkey 0 -1 1) "a" 2) "b" 3) "c" 4) "c" 5) "b" 6) "a" 127.0.0.1:6379> lpop listkey "a" 127.0.0.1:6379> lrange listkey 0 -1 1) "b" 2) "c" 3) "c" 4) "b" 5) "a" 127.0.0.1:6379> rpop listkey "a" 127.0.0.1:6379> lrange listkey 0 -1 1) "b" 2) "c" 3) "c" 4) "b"
127.0.0.1:6379> lrange listkey 0 -1 1) "b" 2) "c" 3) "c" 4) "b" 127.0.0.1:6379> linsert listkey before b 0 (integer) 5 127.0.0.1:6379> lrange listkey 0 -1 1) "0" 2) "b" 3) "c" 4) "c" 5) "b" 127.0.0.1:6379> linsert listkey after c 1 (integer) 6 127.0.0.1:6379> lrange listkey 0 -1 1) "0" 2) "b" 3) "c" 4) "1" 5) "c" 6) "b"
(1) count>0,從左到右,刪除最多count個value相等的項
(2) count<0,從右到左,刪除最多abs(count)個value相等的項
(3) count=0,從左到右,刪除全部value相等的項
127.0.0.1:6379> lrange listkey 0 -1 1) "0" 2) "b" 3) "c" 4) "1" 5) "c" 6) "b" 127.0.0.1:6379> lrem listkey 1 b (integer) 1 127.0.0.1:6379> lrange listkey 0 -1 1) "0" 2) "c" 3) "1" 4) "c" 5) "b" 127.0.0.1:6379> lrem listkey -1 c (integer) 1 127.0.0.1:6379> lrange listkey 0 -1 1) "0" 2) "c" 3) "1" 4) "b"
127.0.0.1:6379> lrange listkey 0 -1 1) "c" 2) "b" 3) "a" 4) "a" 5) "b" 6) "c" 127.0.0.1:6379> ltrim listkey 1 3 OK 127.0.0.1:6379> lrange listkey 0 -1 1) "b" 2) "a" 3) "a"
127.0.0.1:6379> lrange listkey 0 -1 1) "a" 2) "b" 3) "c" 4) "d" 5) "e" 6) "f" 127.0.0.1:6379> lindex listkey 0 "a" 127.0.0.1:6379> lindex listkey -1 "f" 127.0.0.1:6379> llen listkey (integer) 6
127.0.0.1:6379> lrange listkey 0 -1 1) "a" 2) "b" 3) "c" 127.0.0.1:6379> lset listkey 2 0 OK 127.0.0.1:6379> lrange listkey 0 -1 1) "a" 2) "b" 3) "0"
更多 List 相關命令:http://www.redis.cn/commands....
lpush + lpop = Stack (棧)
lpush + rpop = Queue (隊列)
lpush + ltrim = Capped Collection (定容集合)
lpush + brpop = Message Queue (消息隊列)
Redis學習筆記 - 數據類型與API(1)Key
Redis學習筆記 - 數據類型與API(2)String
Redis學習筆記 - 數據類型與API(3)List
Redis學習筆記 - 數據類型與API(4)Set
Redis學習筆記 - 數據類型與API(5)Sorted Set
Redis學習筆記 - 數據類型與API(6)Hashredis