redis list 使用和理解
阿新 • • 發佈:2019-02-09
key | element |
---|---|
user:1:message | a-b-c-d-e-f |
- lpush :左邊加入
- lpop:左邊彈出
- rpush :右邊加入
- rpop :左邊彈出
- llen:長度
- lrem:移除某個元素
- lrange :擷取某一段的元素
- lindex:某個位置的元素
特點:
- 有序
- 可以重複
- 左右兩邊可以插入彈出
rpush key value1 value2 value3 #從列表右端插入值 lpush key value1 value2 ...valuen #從列表左端插入值 1-N linsert key before|after value newvalue #在list指定的值前|後 插入newvalue lpop key #從列表左側彈出一個item rpop #從列表右側彈出一個item lrem key count value #根據count值 從列表中刪除所有value相等的項 (1) count>0 從左到右 ,刪除最多countg個value相等的項 (2)count<0 從右到左,刪除最多Math.abs(count)個value相等的專案 (3) count = 0,刪除所有value相等的項
abcdef | |
---|---|
lrem listkey 0 a | ccbf |
lrem listkey -1 c | cbf |
ltrim key start end
#按照索引範圍修剪列表
abcdef | |
---|---|
ltrim listkey 1 4 | bcde |
ltrim listkey 0 2 | bcd |
查
lrange key start end (包括end)
#獲取列表制定索引範圍所有item
abcdef
lindex key index
#獲取列表制定索引的item
llen key
#獲取列表的長度
abcdef | |
---|---|
lrange listkey 0 2 | abc |
lrange listkey 1 -1 | bcdef |
lindex listkey 1 | a |
lindex listkey -1 | f |
llen key | 6 |
lset key index newvalue
#設定列表制定索引值為newvalue
abcdef | |
---|---|
lset listkey 2 java | abjavadef |
實戰:
TimeLine
你關注的人更新微博:lpush
weibo10129
weibo998
weibo10194
weibo10158
weibo100
bl0op key timeout #lpop 阻塞版本 timeout是阻塞超時時間,timeout=0 為永遠不會阻塞 brpop key timeout #rpop 阻塞版本 timeout為阻塞超時時間,timeout=0 永遠不阻塞
tips
- lrush +lpop = stack
- lpush +rpop = queue
- lpush + ltrim = capped collection
- lpush +brpop+ = message queue