数据类型-list 实现日志消息队列 | 学习笔记

简介: 快速学习数据类型-list 实现日志消息队列

开发者学堂课程【Redis 入门到精通(基础篇)数据类型-list 实现日志消息队列】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/764/detail/13383


数据类型-list 实现日志消息队列

 

内容介绍

一、list 类型数据操作注意事项

二、list 类型应用场景

三、Tips7

 

一、list 类型数据操作注意事项

●list中保存的数据都是string 类型的,数据总容量是有限的,最多2^32-1个元素(4294967295)。

●list 具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作

●获取全部数据操作结束索引设置为-1

●list 可以对数据进行分页操作,通常第一页的信息来自于list,第2页及更多的信息通过数据库的形式加载

List 的操作就介绍到这里,有一些操作,但是常用的我们已经学习了,接下来说一下注意事项,首先,list中保存的数据都是string类型的,数据总容量是有限的,最多2^32-1个元素(4294967295),一般不会去塞满,如果满了系统会告诉你的,超过范围;

第二,list具有索引的概念,在之前看到了,索引的时候,有1,还有0,-1,-2这样的概念,这样除了我们按照左右两端进行操作以外,还有索引的方式进行,注意的是最主要的操作方式不是栈就是队列的模型,先进先出,先进后出,或者说后进先出,最主要的还是以队列的形式或者栈的形式呈现,就是左右操作;

第三,获取全部数据操作的结束索引设置为-1,这个并不是通用格式,而是倒着查,使用其他的也可以,就是我们使用全操作,len 0 -1;最后一个,list有顺序,可以做一些有意思的事情,把数据都加进去以后,可以对数据进行分页操作,取一个数值分开,然后通常第一页的信息来自于list,第2页及更多的信息通过数据库的形式加载,可能有,也可能没有,通常第一页走内存,走list,用缓存思想,数据通过我们的内存提供,这是提高我们查询一种分页的方式,

有时候提高工作效率不是靠一个方案解决,可以多方面考虑,这样某个地方带来的就可能解决很多问题,比方说淘宝,第一页数据快速拉,第二页就自己去翻,再去查数据库,一般第一页解决问题较多,这是list的使用注意事项。


二、list 类型应用场景

业务场景

twitter、新浪微博、腾讯微博中个人用户的关注列表需要按照用户的关注顺序进行展示,粉丝列表需要将最近关注的粉丝列在前面

新闻、资讯类网站如何将最新的新闻或资讯按照发生的时间顺序展示?
企业运营过程中,系统将产生出大量的运营数据,如何保障多台服务器操作日志的统一顺序输出?

image.png

接下来就用一个应用场景对 list 做一个综合的应用,twitter、新浪微博、腾讯微博中个人用户的关注列表是有顺序的,先关注的会慢慢后退,被新关注的挤到后面,粉丝也是一样,新关注的粉丝列在前面,这是一个典型的多数据,有顺序的一个应用,面对这样的情况只有 list才能实现,像一些新闻或者说企业运营的数据的日志等等,都是最近发生的在最前面,有时候还会造成一些比较麻烦的影响。

比方说四台服务器,各自都有日志,然后结合到一块,出问题了,特别乱,不知道怎样排列的,那么此时就需要一个redis,将所有的日志收起来,然后谁先发生谁先进去,一个一个按照队列那样,无论哪个先发生,都去redis里面,这样就不会出问题了,如果需要时,有一台服务器,向redis发出请求调用,redis给出,这时给出的就是最全的,没有单独这一说,这样就解决了这个问题。

解决方案

●依赖list的数据具有顺序的特征对信息进行管理

●使用队列模型解决多路信息汇总合并的问题

●使用栈模型解决最新消息的问题


三、Tips7

●redis应用于最新消息展示

依赖list的数据具有顺序的特征对信息进行管理,我们可以用队列消息来解决这个多路消息的汇总合并,我们也可以用栈的模型解决这个最新消息的问题,消息一个一个进去,最新的就是最上面的那个,接下来进行模拟。

打开三个客户端,一号客户端发起一个日志,rpush logs a1.. ,然后回车,rpush logs a1... ,回车,二号客户端rpush logs b1.. ,回车,二号客户端rpush logs b1... ,三号客户端,rpush logs c1.. ,回车,然后二号发送,三号发送,rpush logs c1... ,回车,此时总服务器查询,lrange logs 0 -1,所有的就都出现了,都是按时间顺序依次进入redis,此时redis充当的就是一个消息的聚集,优点就是有顺序,谁先进来谁先放进去,这就是依赖list的数据具有顺序的特征对信息进行管理,刚刚的顺序是右进左出的顺序,是从消息的时间发生往下列的,可以用作消息排队,也就是最新消息展示。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
6月前
|
消息中间件 开发工具 RocketMQ
消息队列 MQ产品使用合集之如何关闭客户端的日志记录
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
2月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
443 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
6月前
|
消息中间件 负载均衡 NoSQL
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
74 0
|
3月前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
2月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
224 0
|
4月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
4月前
|
存储 NoSQL 算法
Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。
|
4月前
|
索引
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
431 3
|
4月前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型list&set()
本文介绍了Python中list和set两种数据类型的使用,包括它们的创建、取值、增删改查操作、排序以及内置函数的使用,还探讨了list的比较函数和set的快速去重功能。
34 0