Redis之列表
阿新 • • 發佈:2021-09-16
(1).list列表
基於Linked List實現 元
素是字串型別
列表頭尾增刪快,中間增刪慢,增刪元素是常態
元素可以重複出現
最多包含2^32-1元素
(2).列表的索引
從左至右,從0開始
從右至左,從-1開始
(3).命令說明
B block 塊,阻塞
L left 左
R right 右
X exist 存在
(4).左右或者頭尾壓入元素
LPUSH key value [value ...]
LPUSHX key value
RPUSH key value [value ...]
RPUSHX key value
(5).左右或者頭尾彈出元素(表中元素消失)
LPOP key
RPOP key
(6).從一個列表尾部彈出元素壓入到另一個列表的頭部
RPOPLPUSH source destination
(7).返回列表中指定範圍元素
LRANGE key start stop
LRANGE key 0 -1 表示返回所有元素
(8).獲取指定位置的元素
LINDEX key index
(9).設定指定位置元素的值
LSET key index value
(10).列表長度,元素個數
LLEN key
(11).從列表頭部開始刪除值等於value的元素count次
LREM key count value
count > 0 : 從表頭開始向表尾搜尋,移除與 value 相等的元素,數量為 count
count < 0 : 從表尾開始向表頭搜尋,移除與 value 相等的元素,數量為 count 的絕對值
count = 0 : 移除表中所有與 value 相等的值
舉例 :
RPUSH listkey c abc c ab 123 ab bj ab redis list
LREM listkey 2 ab
LRANGE listkey 0 -1
(12).去處指定範圍外元素
LTRIM key start stop
舉例:
RPUSH listkey c abc c ab 123 ab bj ab redis list
LTRIM listkey 0 -1
LTRIM listkey 1 -1
LTRIM listkey 1 10000
微博的評論最後500條 :
LTRIM u1234:forumid:comments 0 499
(13).在列表中某個存在的值(pivot)前或後插入元素
LINSERT key BEFORE|AFTER pivot value
key和pivot不存在,不進行任何操作
舉例:
RPUSH lst Clojure C Lua
LINSERT lst AFTER C Python
LINSERT lst BEFORE C Ruby
(14).阻塞
如果彈出的列表不存在或者為空,就會阻塞
超時時間設定為0,就是永久阻塞,直到有資料可以彈出
如果多個客戶端阻塞在同一個列表上,使用First In First Service原則,先到先服務
(15).左右或者頭尾阻塞彈出元素
BLPOP key [key ...] timeout
BRPOP key [key ...] timeout
timeout為設定的多少時間後彈出
(16).從一個列表尾部阻塞彈出元素壓入到另一個列表的頭部
BRPOPLPUSH source destination timeout