Redis研究(五)—列表类型
一、介绍 列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素或者获取列表的一个片段。 列表类型内部是使用双向链表实现的, 所以向列表两端添加元素的时间复杂度为O(1).获取越接近两端的元素速度越快。 所以不管原来有多少数据
一、介绍
列表类型(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
IDChvzwvcD4KCjxwPjxzdHJvbmc+tO7F5Mq508NscHVzaLrNbHBvcCAgILvy1d8gcnB1c2i6zXJwb3Cw0cHQse21sdf21bs8L3N0cm9uZz48L3A+CjxwPjxzdHJvbmc+tO7F5Mq508NscHVzaLrNcnBvcCAgu/LV3yBycHVzaLrNbHBvcLDRwdCx7bWx1/a208HQPC9zdHJvbmc+PC9wPgo8cD48c3Ryb25nPjxicj4KPC9zdHJvbmc+PC9wPgo8cD48c3Ryb25nPjMuu/HIocHQse3UqsvYuPbK/Twvc3Ryb25nPjwvcD4KPHA+PHByZSBjbGFzcz0="brush:sql;">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
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命令可以很直观的在多个队列中传递数据。
上一篇: 技术总监的修养
下一篇: C语言库函数 (B类字母)