<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.eijux.com/index.php?action=history&amp;feed=atom&amp;title=Redis%EF%BC%9AStream</id>
	<title>Redis：Stream - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.eijux.com/index.php?action=history&amp;feed=atom&amp;title=Redis%EF%BC%9AStream"/>
	<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Redis%EF%BC%9AStream&amp;action=history"/>
	<updated>2026-04-25T08:09:27Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Redis%EF%BC%9AStream&amp;diff=4453&amp;oldid=prev</id>
		<title>Eijux：​/* Stream */</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Redis%EF%BC%9AStream&amp;diff=4453&amp;oldid=prev"/>
		<updated>2021-10-02T16:14:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Stream&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021年10月3日 (日) 00:14的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l8&quot;&gt;第8行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第8行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Redis Stream &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;提供了消息的持久化和主备复制功能，可以让任何客户端访问任何时刻的数据，并且能记住每一个客户端的访问位置，还能保证消息不丢失。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Redis Stream &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;提供了'''消息持久化'''和'''主备复制'''功能，可以让任何客户端访问任何时刻的数据，并且能记住每一个客户端的访问位置，还能保证消息不丢失。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Redis Stream 主要用于消息队列（MQ，Message Queue）.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Redis Stream 主要用于消息队列（MQ，Message Queue）.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Redis Stream 是 Redis '''5.0''' 版本新增加的'''数据结构'''。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Redis Stream 是 Redis '''5.0''' 版本新增加的'''数据结构'''。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Redis%EF%BC%9AStream&amp;diff=4452&amp;oldid=prev</id>
		<title>Eijux：​/* Stream */</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Redis%EF%BC%9AStream&amp;diff=4452&amp;oldid=prev"/>
		<updated>2021-10-02T16:13:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Stream&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021年10月3日 (日) 00:13的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l10&quot;&gt;第10行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第10行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Redis Stream 提供了消息的持久化和主备复制功能，可以让任何客户端访问任何时刻的数据，并且能记住每一个客户端的访问位置，还能保证消息不丢失。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Redis Stream 提供了消息的持久化和主备复制功能，可以让任何客户端访问任何时刻的数据，并且能记住每一个客户端的访问位置，还能保证消息不丢失。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Redis Stream 主要用于消息队列（MQ，Message Queue）.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Redis Stream 主要用于消息队列（MQ，Message Queue）.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Redis Stream 是 Redis 5.0 版本新增加的'''数据结构'''。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Redis Stream 是 Redis &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'''&lt;/ins&gt;5.0&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;''' &lt;/ins&gt;版本新增加的'''数据结构'''。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 结构 ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 结构 ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Redis%EF%BC%9AStream&amp;diff=3131&amp;oldid=prev</id>
		<title>Eijux：​建立内容为“category:Redis  == Stream == &lt;pre&gt; Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能，但它有个缺点就是消息无法…”的新页面</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Redis%EF%BC%9AStream&amp;diff=3131&amp;oldid=prev"/>
		<updated>2021-05-11T14:46:56Z</updated>

		<summary type="html">&lt;p&gt;建立内容为“&lt;a href=&quot;/%E5%88%86%E7%B1%BB:Redis&quot; title=&quot;分类:Redis&quot;&gt;category:Redis&lt;/a&gt;  == Stream == &amp;lt;pre&amp;gt; Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能，但它有个缺点就是消息无法…”的新页面&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[category:Redis]]&lt;br /&gt;
&lt;br /&gt;
== Stream ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能，但它有个缺点就是消息无法持久化，如果出现网络断开、Redis 宕机等，消息就会被丢弃。&lt;br /&gt;
&lt;br /&gt;
简单来说发布订阅 (pub/sub) 可以分发消息，但无法记录历史消息。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redis Stream 提供了消息的持久化和主备复制功能，可以让任何客户端访问任何时刻的数据，并且能记住每一个客户端的访问位置，还能保证消息不丢失。&lt;br /&gt;
* Redis Stream 主要用于消息队列（MQ，Message Queue）.&lt;br /&gt;
* Redis Stream 是 Redis 5.0 版本新增加的'''数据结构'''。&lt;br /&gt;
&lt;br /&gt;
=== 结构 ===&lt;br /&gt;
Redis Stream 的结构如下所示：&lt;br /&gt;
&lt;br /&gt;
: [[File:Redis Stream结构.png|600px]]&lt;br /&gt;
它有一个消息链表，将所有加入的消息都串起来，每个消息都有一个唯一的 ID 和对应的内容：&lt;br /&gt;
* 每个 Stream 都有唯一的名称，它就是 Redis 的 key，在我们首次使用 xadd 指令追加消息时自动创建。&lt;br /&gt;
&lt;br /&gt;
=== 命令 ===&lt;br /&gt;
消息队列相关命令：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 命令 !! 描述 &lt;br /&gt;
|-&lt;br /&gt;
| XADD || 添加消息到末尾&lt;br /&gt;
|-&lt;br /&gt;
| XDEL || 删除消息&lt;br /&gt;
|-&lt;br /&gt;
| XLEN || 获取流包含的元素数量，即消息长度&lt;br /&gt;
|-&lt;br /&gt;
| XTRIM || 对流进行修剪，限制长度&lt;br /&gt;
|-&lt;br /&gt;
| XRANGE || 获取消息列表，会自动过滤已经删除的消息&lt;br /&gt;
|-&lt;br /&gt;
| XREVRANGE || 反向获取消息列表，ID 从大到小&lt;br /&gt;
|-&lt;br /&gt;
| XREAD || 以阻塞或非阻塞方式获取消息列表&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
消费者组相关命令：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 命令 !! 描述 &lt;br /&gt;
|-&lt;br /&gt;
| XGROUP CREATE || 创建消费者组&lt;br /&gt;
|-&lt;br /&gt;
| XGROUP DESTROY || 删除消费者组&lt;br /&gt;
|-&lt;br /&gt;
| XGROUP DELCONSUMER || 删除消费者&lt;br /&gt;
|-&lt;br /&gt;
| XREADGROUP GROUP || 读取消费者组中的消息&lt;br /&gt;
|-&lt;br /&gt;
| XGROUP SETID || 为消费者组设置新的最后递送消息ID&lt;br /&gt;
|-&lt;br /&gt;
| XPENDING || 显示待处理消息的相关信息&lt;br /&gt;
|-&lt;br /&gt;
| XACK || 将消息标记为&amp;quot;已处理&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| XCLAIM || 转移消息的归属权&lt;br /&gt;
|-&lt;br /&gt;
| XINFO || 查看流和消费者组的相关信息；&lt;br /&gt;
|-&lt;br /&gt;
| XINFO GROUPS || 打印消费者组的信息；&lt;br /&gt;
|-&lt;br /&gt;
| XINFO STREAM || 打印流信息&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 示例 ===&lt;br /&gt;
消息队列相关命令：&lt;br /&gt;
# '''XADD'''：&lt;br /&gt;
#: 使用 XADD 向队列添加消息，如果指定的队列不存在，则创建一个队列。XADD 语法格式：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XADD key ID field value [field value ...]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#* key ：'''队列名称'''，如果不存在就创建。&lt;br /&gt;
#* ID ：'''消息 id'''。用 * 表示由 redis 生成；可以自定义，但是要自己保证递增性。&lt;br /&gt;
#* field value ： '''记录'''。&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
redis&amp;gt; XADD mystream * name Sara surname OConnor&lt;br /&gt;
&amp;quot;1601372323627-0&amp;quot;&lt;br /&gt;
redis&amp;gt; XADD mystream * field1 value1 field2 value2 field3 value3&lt;br /&gt;
&amp;quot;1601372323627-1&amp;quot;&lt;br /&gt;
redis&amp;gt; XLEN mystream&lt;br /&gt;
(integer) 2&lt;br /&gt;
redis&amp;gt; XRANGE mystream - +&lt;br /&gt;
1) 1) &amp;quot;1601372323627-0&amp;quot;&lt;br /&gt;
   2) 1) &amp;quot;name&amp;quot;&lt;br /&gt;
      2) &amp;quot;Sara&amp;quot;&lt;br /&gt;
      3) &amp;quot;surname&amp;quot;&lt;br /&gt;
      4) &amp;quot;OConnor&amp;quot;&lt;br /&gt;
2) 1) &amp;quot;1601372323627-1&amp;quot;&lt;br /&gt;
   2) 1) &amp;quot;field1&amp;quot;&lt;br /&gt;
      2) &amp;quot;value1&amp;quot;&lt;br /&gt;
      3) &amp;quot;field2&amp;quot;&lt;br /&gt;
      4) &amp;quot;value2&amp;quot;&lt;br /&gt;
      5) &amp;quot;field3&amp;quot;&lt;br /&gt;
      6) &amp;quot;value3&amp;quot;&lt;br /&gt;
redis&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# '''XTRIM'''：【？？？】&lt;br /&gt;
#: 使用 XTRIM 对流进行修剪，限制长度。语法格式：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XTRIM key MAXLEN [~] count&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#* key ：队列名称&lt;br /&gt;
#* MAXLEN ：长度&lt;br /&gt;
#* count ：数量&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
127.0.0.1:6379&amp;gt; XADD mystream * field1 A field2 B field3 C field4 D&lt;br /&gt;
&amp;quot;1601372434568-0&amp;quot;&lt;br /&gt;
127.0.0.1:6379&amp;gt; XTRIM mystream MAXLEN 2&lt;br /&gt;
(integer) 0&lt;br /&gt;
127.0.0.1:6379&amp;gt; XRANGE mystream - +&lt;br /&gt;
1) 1) &amp;quot;1601372434568-0&amp;quot;&lt;br /&gt;
   2) 1) &amp;quot;field1&amp;quot;&lt;br /&gt;
      2) &amp;quot;A&amp;quot;&lt;br /&gt;
      3) &amp;quot;field2&amp;quot;&lt;br /&gt;
      4) &amp;quot;B&amp;quot;&lt;br /&gt;
      5) &amp;quot;field3&amp;quot;&lt;br /&gt;
      6) &amp;quot;C&amp;quot;&lt;br /&gt;
      7) &amp;quot;field4&amp;quot;&lt;br /&gt;
      8) &amp;quot;D&amp;quot;&lt;br /&gt;
127.0.0.1:6379&amp;gt;&lt;br /&gt;
&lt;br /&gt;
redis&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# '''XDEL'''：&lt;br /&gt;
#: 使用 XDEL 删除消息。语法格式：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XDEL key ID [ID ...]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#* key：队列名称&lt;br /&gt;
#* ID ：消息 ID&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt; XADD mystream * a 1&lt;br /&gt;
1538561698944-0&lt;br /&gt;
&amp;gt; XADD mystream * b 2&lt;br /&gt;
1538561700640-0&lt;br /&gt;
&amp;gt; XADD mystream * c 3&lt;br /&gt;
1538561701744-0&lt;br /&gt;
&amp;gt; XDEL mystream 1538561700640-0&lt;br /&gt;
(integer) 1&lt;br /&gt;
127.0.0.1:6379&amp;gt; XRANGE mystream - +&lt;br /&gt;
1) 1) 1538561698944-0&lt;br /&gt;
   2) 1) &amp;quot;a&amp;quot;&lt;br /&gt;
      2) &amp;quot;1&amp;quot;&lt;br /&gt;
2) 1) 1538561701744-0&lt;br /&gt;
   2) 1) &amp;quot;c&amp;quot;&lt;br /&gt;
      2) &amp;quot;3&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# '''XLEN'''：&lt;br /&gt;
#: 使用 XLEN 获取流包含的元素数量，即消息长度。语法格式：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XLEN key&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#* key：队列名称&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
redis&amp;gt; XADD mystream * item 1&lt;br /&gt;
&amp;quot;1601372563177-0&amp;quot;&lt;br /&gt;
redis&amp;gt; XADD mystream * item 2&lt;br /&gt;
&amp;quot;1601372563178-0&amp;quot;&lt;br /&gt;
redis&amp;gt; XADD mystream * item 3&lt;br /&gt;
&amp;quot;1601372563178-1&amp;quot;&lt;br /&gt;
redis&amp;gt; XLEN mystream&lt;br /&gt;
(integer) 3&lt;br /&gt;
redis&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# '''XRANGE'''：【按 id 顺序（即插入顺序）获取】&lt;br /&gt;
#: 使用 XRANGE 获取消息列表，会自动过滤已经删除的消息。语法格式：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XRANGE key start end [COUNT count]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#* key ：队列名&lt;br /&gt;
#* start ：开始值， - 表示最小值&lt;br /&gt;
#* end ：结束值， + 表示最大值&lt;br /&gt;
#* count ：数量&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
redis&amp;gt; XADD writers * name Virginia surname Woolf&lt;br /&gt;
&amp;quot;1601372577811-0&amp;quot;&lt;br /&gt;
redis&amp;gt; XADD writers * name Jane surname Austen&lt;br /&gt;
&amp;quot;1601372577811-1&amp;quot;&lt;br /&gt;
redis&amp;gt; XADD writers * name Toni surname Morrison&lt;br /&gt;
&amp;quot;1601372577811-2&amp;quot;&lt;br /&gt;
redis&amp;gt; XADD writers * name Agatha surname Christie&lt;br /&gt;
&amp;quot;1601372577812-0&amp;quot;&lt;br /&gt;
redis&amp;gt; XADD writers * name Ngozi surname Adichie&lt;br /&gt;
&amp;quot;1601372577812-1&amp;quot;&lt;br /&gt;
redis&amp;gt; XLEN writers&lt;br /&gt;
(integer) 5&lt;br /&gt;
redis&amp;gt; XRANGE writers - + COUNT 2&lt;br /&gt;
1) 1) &amp;quot;1601372577811-0&amp;quot;&lt;br /&gt;
   2) 1) &amp;quot;name&amp;quot;&lt;br /&gt;
      2) &amp;quot;Virginia&amp;quot;&lt;br /&gt;
      3) &amp;quot;surname&amp;quot;&lt;br /&gt;
      4) &amp;quot;Woolf&amp;quot;&lt;br /&gt;
2) 1) &amp;quot;1601372577811-1&amp;quot;&lt;br /&gt;
   2) 1) &amp;quot;name&amp;quot;&lt;br /&gt;
      2) &amp;quot;Jane&amp;quot;&lt;br /&gt;
      3) &amp;quot;surname&amp;quot;&lt;br /&gt;
      4) &amp;quot;Austen&amp;quot;&lt;br /&gt;
redis&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# '''XREVRANGE'''：&lt;br /&gt;
#: 使用 XREVRANGE 获取消息列表，会自动过滤已经删除的消息。语法格式：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XREVRANGE key end start [COUNT count]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#* key ：队列名&lt;br /&gt;
#* end ：结束值， + 表示最大值&lt;br /&gt;
#* start ：开始值， - 表示最小值&lt;br /&gt;
#* count ：数量&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
redis&amp;gt; XADD writers * name Virginia surname Woolf&lt;br /&gt;
&amp;quot;1601372731458-0&amp;quot;&lt;br /&gt;
redis&amp;gt; XADD writers * name Jane surname Austen&lt;br /&gt;
&amp;quot;1601372731459-0&amp;quot;&lt;br /&gt;
redis&amp;gt; XADD writers * name Toni surname Morrison&lt;br /&gt;
&amp;quot;1601372731459-1&amp;quot;&lt;br /&gt;
redis&amp;gt; XADD writers * name Agatha surname Christie&lt;br /&gt;
&amp;quot;1601372731459-2&amp;quot;&lt;br /&gt;
redis&amp;gt; XADD writers * name Ngozi surname Adichie&lt;br /&gt;
&amp;quot;1601372731459-3&amp;quot;&lt;br /&gt;
redis&amp;gt; XLEN writers&lt;br /&gt;
(integer) 5&lt;br /&gt;
redis&amp;gt; XREVRANGE writers + - COUNT 1&lt;br /&gt;
1) 1) &amp;quot;1601372731459-3&amp;quot;&lt;br /&gt;
   2) 1) &amp;quot;name&amp;quot;&lt;br /&gt;
      2) &amp;quot;Ngozi&amp;quot;&lt;br /&gt;
      3) &amp;quot;surname&amp;quot;&lt;br /&gt;
      4) &amp;quot;Adichie&amp;quot;&lt;br /&gt;
redis&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# '''XREAD'''：&lt;br /&gt;
#: 使用 XREAD 以'''阻塞或非阻塞'''方式获取消息列表。语法格式：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#* count ：数量&lt;br /&gt;
#* milliseconds ：可选，阻塞毫秒数，没有设置就是非阻塞模式&lt;br /&gt;
#* key ：队列名&lt;br /&gt;
#* id ：消息 ID&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
# 从 Stream 头部读取两条消息&lt;br /&gt;
&amp;gt; XREAD COUNT 2 STREAMS mystream writers 0-0 0-0&lt;br /&gt;
1) 1) &amp;quot;mystream&amp;quot;&lt;br /&gt;
   2) 1) 1) 1526984818136-0&lt;br /&gt;
         2) 1) &amp;quot;duration&amp;quot;&lt;br /&gt;
            2) &amp;quot;1532&amp;quot;&lt;br /&gt;
            3) &amp;quot;event-id&amp;quot;&lt;br /&gt;
            4) &amp;quot;5&amp;quot;&lt;br /&gt;
            5) &amp;quot;user-id&amp;quot;&lt;br /&gt;
            6) &amp;quot;7782813&amp;quot;&lt;br /&gt;
      2) 1) 1526999352406-0&lt;br /&gt;
         2) 1) &amp;quot;duration&amp;quot;&lt;br /&gt;
            2) &amp;quot;812&amp;quot;&lt;br /&gt;
            3) &amp;quot;event-id&amp;quot;&lt;br /&gt;
            4) &amp;quot;9&amp;quot;&lt;br /&gt;
            5) &amp;quot;user-id&amp;quot;&lt;br /&gt;
            6) &amp;quot;388234&amp;quot;&lt;br /&gt;
2) 1) &amp;quot;writers&amp;quot;&lt;br /&gt;
   2) 1) 1) 1526985676425-0&lt;br /&gt;
         2) 1) &amp;quot;name&amp;quot;&lt;br /&gt;
            2) &amp;quot;Virginia&amp;quot;&lt;br /&gt;
            3) &amp;quot;surname&amp;quot;&lt;br /&gt;
            4) &amp;quot;Woolf&amp;quot;&lt;br /&gt;
      2) 1) 1526985685298-0&lt;br /&gt;
         2) 1) &amp;quot;name&amp;quot;&lt;br /&gt;
            2) &amp;quot;Jane&amp;quot;&lt;br /&gt;
            3) &amp;quot;surname&amp;quot;&lt;br /&gt;
            4) &amp;quot;Austen&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
消费者组相关命令：&lt;br /&gt;
# '''XGROUP CREATE'''：&lt;br /&gt;
#: 使用 XGROUP CREATE 创建消费者组。语法格式：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XGROUP [CREATE key groupname id-or-$] [SETID key groupname id-or-$] [DESTROY key groupname] [DELCONSUMER key groupname consumername]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#* key ：队列名称，如果不存在就创建&lt;br /&gt;
#* groupname ：组名&lt;br /&gt;
#* $ ： '''表示从尾部开始消费，只接受新消息，当前 Stream 消息会全部忽略'''&lt;br /&gt;
#: 从头开始消费:&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XGROUP CREATE mystream consumer-group-name 0-0  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#: 从尾开始消费:&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XGROUP CREATE mystream consumer-group-name $&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# '''XREADGROUP GROUP'''：&lt;br /&gt;
#: 使用 XREADGROUP GROUP 读取消费组中的消息。语法格式：&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key [key ...] ID [ID ...]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#* group ：消费组名&lt;br /&gt;
#* consumer ：消费者名&lt;br /&gt;
#* count ： 读取数量&lt;br /&gt;
#* milliseconds ： 阻塞毫秒数&lt;br /&gt;
#* key ： 队列名&lt;br /&gt;
#* ID ： 消息 ID&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; highlight=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
XREADGROUP GROUP consumer-group-name consumer-name COUNT 1 STREAMS mystream &amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
</feed>