Redis的列表(List)类型
Posted Syso(Alt+/)Cjs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis的列表(List)类型相关的知识,希望对你有一定的参考价值。
列表类型(List)可以存储一个有序的字符串列表,常用的操作就是向列表两端添加元素,或者获取列表中某一个片段。
列表类型内部使用双向链表(double linked list)实现的,所以向列表两端添加或删除元素的速度非常快,越是接近两端的元素就越快,但是,也有弊端,就是通过索引访问元素的速度比较慢。
因为使用了双向链表实现存储的,所以在命令上也有两种:L和R。“L”代表左,“R”代表右。
一、常用命令
1、向列表两端添加元素
LPUSH key value1 [value2 ... ]
RPUSH key value1 [value2 ... ]
第一行命令向key为numbers的列表添加一个“1”,然后再添加了两个元素,如下图所示:
由于使用lpush,即向左添加元素到队列,所以第二条命令一次性添加两个元素,会先将2在列表的左边添加进去,接着把3从左边添加进去,所以会看到上图的效果,lrange命令也进行了验证。(lrang命令是用于获得列表片段)
接着从右边添加元素:
lpush命令和rpush命令的用法是一样的,前者从左添加,后者从右添加。
2、弹出元素
lpop key
rpop key
redis的列表类型有点像栈,上面第一条命令表示从左边弹出一位元素,即“3”,第二条命令表示从右弹出一位元素,即“-1”,再次查看numbers列表的元素,参数依然是0和4(0和4表示索引),但返回只有2,1,0.说明pop这个命令会直接将列表的元素从列表中“删除”。
3、获取列表片段
lrange key start stop
start和stop表示索引,列表的起始索引值为0,lrange命令也支持负索引,如:
上图的-3表示从右边开始第三位元素,-1表示从右边开始的第一位,如此类推。
4、删除列表中指定的值
lrem key count value
count:
- 当count > 0时,lrem命令会从左边开始删除前count个值为value的元素;
- 当count < 0 时,lrem命令会从右边开始删除前 |count| 个值为value的元素;
- 当count = 0时,lrem命令会删除所有值为value的元素。
上图时从右边删除前两个值为2元素。
二、实际应用场景
1、存储文章ID列表
当每次发布新文章时,就可以使用lpush命令将文章ID加入到列表中,这样显示文章列表时,就会根据加入文章加入列表的顺序进行倒序显示,即最新发布的文章排在最前面。
用列表存储文章ID时,要注意两个问题:
文章发布时间不易修改;
当文章数量较多时,访问中间文章的速度比较慢,前面也介绍过,列表类型存储是使用双向链表实现的。
2、存储评论列表
将最新的评论放在列表的左边。
以上是关于Redis的列表(List)类型的主要内容,如果未能解决你的问题,请参考以下文章