Redis Streams 学习资料整理
2022/1/19 19:21:27
本文主要是介绍Redis Streams 学习资料整理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
Redis Stream 是 Redis 5.0 版本新增加的数据结构。
Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。
简单来说发布订阅 (pub/sub) 可以分发消息,但无法记录历史消息。
而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。
常用命令
XADD - 添加消息到末尾
// 示例 > XADD mystream * sensor-id 1234 temperature 19.8 1518951480106-0
上面的例子中,调用了XADD命令往名为mystream的Stream中添加了一个条目sensor-id: 123, temperature: 19.8,使用了自动生成的条目ID,也就是命令返回的值,具体在这里是1518951480106-0。
命令的第一个参数是key的名称mystream,第二个参数是用于唯一确认Stream中每个条目的条目ID。然而,在这个例子中,我们传入的参数值是*,因为我们希望由Redis服务器为我们自动生成一个新的ID。每一个新的ID都会单调增长,简单来讲就是,每次新添加的条目都会拥有一个比其它所有条目更大的ID。
XLEN - 获取流包含的元素数量,即消息长度
// 示例 127.0.0.1:6379> XLEN AHCLOUD_SECURITY_CENTER_ASSET (integer) 1
这里,AHCLOUD_SECURITY_CENTER_ASSET 是 Stream 的 key 的名称,(integer) 1
表示这个 Stream 的条目数量为1。
XREAD - 以阻塞或非阻塞方式获取消息列表
> XREAD COUNT 2 STREAMS mystream 0 1) 1) "mystream" 2) 1) 1) 1519073278252-0 2) 1) "foo" 2) "value_1" 2) 1) 1519073279157-0 2) 1) "foo" 2) "value_2"
以上是XREAD的非阻塞形式。注意COUNT选项并不是必需的,实际上这个命令唯一强制的选项是STREAMS,指定了一组key以及调用者已经看到的每个Stream相应的最大ID,以便该命令仅向客户端提供ID大于我们指定ID的消息。
在上面的命令中,我们写了STREAMS mystream 0,所以我们想要流 mystream中所有ID大于0-0的消息。正如你在上面的例子中所看到的,命令返回了键名,因为实际上可以通过传入多个key来同时从不同的Stream中读取数据。我可以写一下,例如:STREAMS mystream otherstream 0 0。注意在STREAMS选项后面,我们需要提供键名称,以及之后的ID。因此,STREAMS选项必须始终是最后一个。
学习资料
Redis Streams 介绍
Redis Stream | 菜鸟教程
这篇关于Redis Streams 学习资料整理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识