Redis研究(五)—列表类型

本文介绍了Redis中的列表类型,该类型使用双向链表实现,支持高效地在两端添加元素,适合记录日志。文章详细讲解了包括向列表两端添加元素、弹出元素、获取元素个数、获取列表片段、删除指定值、设置指定索引元素、保留指定片段及元素转移等操作,以及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、介绍

列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素或者获取列表的一个片段。


列表类型内部是使用双向链表实现的, 所以向列表两端添加元素的时间复杂度为O(1).获取越接近两端的元素速度越快。

所以不管原来有多少数据(无关),获取头部或者尾部的10条记录也是很快的。


不过使用链表的代价是通过索引访问元素比较慢。


列表类型适合用来记录日志,可以保证加入新日志的速度不会受到已有日志数量的影响。


一个列表类型键最多能容纳2^32-1个元素。


二、命令

1.向列表两端增加元素

lpush key value1 value2...左边增加
rpush key value1 value2...右边增加

上面三条命令执行后的列表情况依次为

【1】

【3 2 1】

【3 2 1 0 -1】


2.从列表两端弹出元素

lpop key 左边弹出一个元素,1.将左边弹出的元素从列表删除,2,。返回被移除的元素值
rpop key

上面两条命令执行后的列表情况依次为

【2 1 0 -1】

【2 1 0】


搭配使用lpush和lpop   或者 rpush和rpop把列表当做栈

搭配使用lpush和rpop  或者 rpush和lpop把列表当做队列


3.获取列表元素个数

llen key

复杂度O(1),不会像sql语句一样,需要遍历一遍数据表来统计条目数量,Redis会直接读取现成的值。


4.获得列表片段

lrange key start stop
支持负索引,-1表示最右边的第一个元素

lrange numbers 0 -1可以获取列表中的所有元素

(1)start > stop ,返回空

(2)stop大于实际范围,返回列表最右边的元素(“到”字很重要)


5.删除列表中指定的值

lrem key count value
删除列表中钱count个值为value的元素 

count > 0 ,从左开始删除count个值为value的元素

count < 0 ,从右边开始删除|count|个值为value的元素

count = 0 ,删除所有值为value的元素。


6.获得,设置指定索引的元素值

lindex key index 返回指定索引的元素
lset key index value 改变指定索引的值


7.只保留列表指定片段

ltrim key start end
删除索引范围  之外 的所有元素


8.向列表插入元素

linsert key before|after pivot value
从左到右查找值为pivot的元素,根据 before|after插入到前面还是后面


9.将元素从一个列表转到另一个列表

rpoplpush source destination
从source列表类型键的右边弹出一个元素,然后将其加入到destination列表类型键的左边,并返回这个元素的值,这个过程是原子的

当吧列表类型作为队列使用时,rpoplpush命令可以很直观的在多个队列中传递数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值