Redis数据类型之列表

key-value键值对

k e y − − > [“str1”,“str2”…]

  1. 每一项都是字符串,最多 2 3 2 − 1 2^32-1 2321
  2. 元素可重复,索引同python 列表的索引
  3. 开头,结尾插入删除快,中间慢

常用命令

  1. 增加数据,并查看
#头部插入
lpush l1 name jack lili
-->l1:["lili","jack","name"]
#尾部插入
rpush l1 tom tom1
-->l1:["lili","jack","name","tom","tom1"]

#查看列表所有元素
lrange l1 0 -1
#统计元素数
llen l1

python实现

r.lpush("l1","lili","jack","name")
r.rpush("l1","tom","tom1")
r.lrange("l1",0,-1)-->return list
r.llen("l1")
  1. 从列表l1弹出一个元素,放入列表l2
rpoplpush l1 l2
-->返回弹出的元素 

python实现

r.rpoplpush("l1","l2")
  1. 列表中间插入
linsert l1 before jack 666
linsert l2 after jack 666

#插入成功,放回新长度
#未找到jack,返回-1
#key不存在或者空,返回0
  1. 两端弹出一个元素
#左边弹出一个元素
lpop l1
#右边弹出一个
rpop l1

#当列表为空时,弹出元素时,阻塞一段时间
blpop l1 10 
-->列表为空/l1不存在时,阻塞10s
-->10s后返回列表元素/nil
-->若l1中有元素,则直接返回,不阻塞
brpop l1 10
  1. 删除列表元素
#删除列表l1中为tom的值,从头向尾扫描,删除1次
lrem l1 1 tom
#删除列表l1中为tom的值,从头向尾扫描,删除5次
lrem l1 5 tom
-->返回删除的元素个数

#删除列表l1中为tom的值,从尾向头扫描,删除5次
lrem l1 -5 tom
  1. 保留索引范围内的元素
ltrim l1 0 3

#example
lpush l1 name jack lili
ltrim l1 0 1
-->["lili","jack"]
  1. 指定索引赋值
lset l1 0 tom

#example
lpush l1 tom jack
lset l1 0 lili
-->["lili","tom"]

使用场景

  1. 存储微博评论,切割保留最新的几个
  2. 生产者消费者模型的中间层

猜你喜欢

转载自blog.csdn.net/weixin_45228198/article/details/113275713