Redis应用场景(三)List集合

浮生半日闲 发布于 2022-11-08 6 次阅读


1、简单队列

由于List是一个链表,会按照插入顺序进行排序,可以保证数据的先后顺序;因此,可以将List作为简单队列(如任务队列,延迟队列等)来使用。

使用LPUSH key value往队列头部插入元素,然后使用LPOP key从队列移除并获取到头部元素;也可以使用RPUSH key value往队列尾部插入元素,然后使用RPOP key从队列尾部并获取到头部元素。

# 往队列种插入元素
127.0.0.1:6379> lpush queue 1
(integer) 1
127.0.0.1:6379> lpush queue 2
(integer) 2
127.0.0.1:6379> lpush queue 3
(integer) 3
# 从队列种获取元素
127.0.0.1:6379> lpop queue
"3"
# 查看队列元素
127.0.0.1:6379> LRANGE queue 0 5
1) "2"
2) "1"

如果想实现栈功能,可以使用LPUSH和RPOP或者RPUSH和LPOP组合命令,来保证先插入的元素先出来。

2、非实时排行榜

由于List是一个有序的链表,那么可以使用List来做排行榜的功能。同时,也因为List是一个链表,在处理两端的元素的时候会非常快,但在处理中间元素的时候,会比较慢,所以List做排行榜的时候,不适用于数据变化非常频繁的时候。

List适用于那些隔断时间计算一次的排行榜功能,如每日排行,成绩排行等。然后使用LRANGE key start end命令来查询列表种的元素信息。

3、最新列表

根据用户行为统计,一般情况下,访问第一页数据的用户会非常多,后面页数会逐渐减少。因此,可以将最新的内容存储到列表中进行缓存;如:评论列表,最新关注列表。