Redis 列表类型(List)和命令(数据类型 三)

基本概念

Redis 列表是一种非常实用和多功能的数据结构,适用于各种场景,如消息队列、实时数据流、任务队列、排行榜、历史记录等。
列表底层是压缩列表(数据量小、元素简单时)和双向循环链表(数据量较大、元素复杂时)

列表类型命令:

列表插入和删除操作:

lpush key value1 value2 …:将一个或多个值插入到列表的头部(左侧)

# 向用户列表添加三个用户id
lpush users 1 2 3

rpush key value1 value2 …:将一个或多个值插入到列表的尾部(右侧)
lpop key:从列表的头部(左侧)移除并返回一个元素。
rpop key:从列表的尾部(右侧)移除并返回一个元素。
ltrim key start stop:修剪(截取)列表,只保留指定范围内的元素。

列表元素访问和操作:

lindex key index:返回列表中指定索引位置的元素。
lrange key start stop:返回列表中指定范围内的元素(start 到 stop索引之间)。
llen key:返回列表的长度(元素个数)。
lrem key count value:从列表中删除指定数量的匹配元素。
lset key index value:设置列表中指定索引位置的元素值。
linsert key before | after pivot value:在列表中指定元素的前面或后面插入一个新元素。
dpoplpush source destination:从一个列表的尾部(右侧)移除一个元素,并将它添加到另一个列表的头部(左侧)。

其他列表操作:

blpop key1 key2 ... timeout:阻塞式的列表弹出操作,从多个列表中弹出元素,如果列表为空则阻塞等待指定时间。
brpop key1 key2 ... timeout:阻塞式的列表弹出操作,从多个列表的尾部(右侧)弹出元素,如果列表为空则阻塞等待指定时间
brpoplpush source destination timeout:阻塞式的列表弹出和插入操作,从一个列表的尾部(右侧)弹出元素,并将它添加到另一个列表的头部(左侧),如果列表为空则阻塞等待指定时间。

列表使用场景:

1.消息队列:

使用 Redis 列表作为消息队列,可以实现简单的发布/订阅模式。生产者可以将消息添加到列表的尾部,而消费者可以从列表的头部获取和处理消息,实现异步任务的处理和消息传递。

2.实时数据流:

Redis 列表可以用于存储实时数据流,如日志、用户活动等。通过将新的数据追加到列表的尾部,可以轻松构建实时数据流,而消费者可以按需读取列表中的数据。

3.任务队列:

将需要处理的任务添加到 Redis 列表中,消费者可以从列表中获取任务并进行处理。这种方式可以实现任务的异步处理和调度,适用于后台任务、定时任务等场景。

4.最新消息/动态:

在社交媒体或新闻应用中,可以使用 Redis 列表存储最新的消息或动态。每当有新的消息生成时,将其添加到列表的头部,保持列表的固定长度,从而实现只保留最新的消息并方便获取。

5.排行榜/计数器:

使用 Redis 列表可以实现排行榜或计数器功能。通过将对象或元素的得分(如分数、点击数等)作为列表中的每个元素,可以按照得分进行排名和计数。

6.历史记录:

Redis 列表可以用于存储用户的历史记录,例如最近浏览的商品、搜索历史等。将新的记录添加到列表的头部,可以轻松地获取最近的记录。

7.缓存淘汰:

当使用 Redis 作为缓存时,可以使用列表类型来实现缓存的淘汰策略。将缓存的键按照使用时间顺序存储在列表中,当缓存空间不足时,可以通过移除列表尾部的键来淘汰最不常用的缓存。

上一篇:哈希(Hash)数据类型和命令(数据类型 二)
下一篇:集合数据类型

你可能感兴趣的:(Redis学习,redis,list,数据库)