redis list 使用和理解

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

  1. lrush +lpop = stack
  2. lpush +rpop = queue
  3. lpush + ltrim = capped collection
  4. lpush +brpop+ = message queue

猜你喜欢

转载自blog.csdn.net/PYouLing123456789/article/details/83868565