redis列表
key-value键值对
k e y − − > [“str1”,“str2”…]
- 每一项都是字符串,最多 2 3 2 − 1 2^32-1 232−1项
- 元素可重复,索引同python 列表的索引
- 开头,结尾插入删除快,中间慢
常用命令
- 增加数据,并查看
#头部插入
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")
- 从列表l1弹出一个元素,放入列表l2
rpoplpush l1 l2
-->返回弹出的元素
python实现
r.rpoplpush("l1","l2")
- 列表中间插入
linsert l1 before jack 666
linsert l2 after jack 666
#插入成功,放回新长度
#未找到jack,返回-1
#key不存在或者空,返回0
- 两端弹出一个元素
#左边弹出一个元素
lpop l1
#右边弹出一个
rpop l1
#当列表为空时,弹出元素时,阻塞一段时间
blpop l1 10
-->列表为空/l1不存在时,阻塞10s
-->10s后返回列表元素/nil
-->若l1中有元素,则直接返回,不阻塞
brpop l1 10
- 删除列表元素
#删除列表l1中为tom的值,从头向尾扫描,删除1次
lrem l1 1 tom
#删除列表l1中为tom的值,从头向尾扫描,删除5次
lrem l1 5 tom
-->返回删除的元素个数
#删除列表l1中为tom的值,从尾向头扫描,删除5次
lrem l1 -5 tom
- 保留索引范围内的元素
ltrim l1 0 3
#example
lpush l1 name jack lili
ltrim l1 0 1
-->["lili","jack"]
- 指定索引赋值
lset l1 0 tom
#example
lpush l1 tom jack
lset l1 0 lili
-->["lili","tom"]
使用场景
- 存储微博评论,切割保留最新的几个
- 生产者消费者模型的中间层