美文网首页
Redis5数据类型6-Stream

Redis5数据类型6-Stream

作者: 轻轻敲醒沉睡的心灵 | 来源:发表于2022-03-18 09:32 被阅读0次

1. Stream 类型介绍

Stream是Redis5.0 引入的一个新的数据类型,官方把它定义为:以更抽象的方式模拟日志的数据结构。Redis的streams主要是一个append only的数据结构,至少在概念上它是一种在内存中表示的抽象数据类型,只不过它们实现了更强大的操作,以克服日志文件本身的限制。
如果你了解MQ,那么可以把streams当做MQ。如果你还了解kafka,那么甚至可以把streams当做kafka。
streams数据结构本身非常简单,但是streams依然是Redis到目前为止最复杂的类型,其原因是实现的一些额外的功能:一系列的阻塞操作允许消费者等待生产者加入到streams的新数据。另外还有一个称为Consumer Groups的概念,这个概念最先由kafka提出,Redis有一个类似实现,和kafka的Consumer Groups的目的是一样的:允许一组客户端协调消费相同的信息流!

2. Stream指令

2.1 增加对象或向已存在对象追加元素

xadd key ID field string [field string ...]
ID包含两部分:时间戳(毫秒)-sequence(同一毫秒的数列号)组成。用*可以代替默认值,也可以自己指定

127.0.0.1:6379> xadd s1 * 宿命荒芜 至少我有风骨
1647422390375-0
127.0.0.1:6379> xadd s2 0-1 岁月掩埋 休想把我沉浮
0-1
127.0.0.1:6379>

2.2 查询元素个数

xlen key

127.0.0.1:6379> xadd s1 * 一炉造化荒天 默
1647422691708-0
127.0.0.1:6379> xlen s1
2
127.0.0.1:6379>

2.3 删除ID

xdel key ID [ID ...]

127.0.0.1:6379> xadd s2 1-1 ab cd
1-1
127.0.0.1:6379> xadd s2 1-2 ef gh
1-2
127.0.0.1:6379> xlen s2
3
127.0.0.1:6379> xdel s2 1-1
1
127.0.0.1:6379> xlen s2
2
127.0.0.1:6379>

2.4 返回给定ID范围的数据

xrange key start end
特殊ID:- 最小ID + 最大ID

127.0.0.1:6379> xrange s1 - +
1647422390375-0
宿命荒芜
至少我有风骨
1647422691708-0
一炉造化荒天
默
127.0.0.1:6379> xrange s2 0-1 1-2
0-1
岁月掩埋
休想把我沉浮
1-2
ef
gh
127.0.0.1:6379>

2.5 从一个或多个stream对象中读取数据

xread [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]
count 是指定ID后的几条
BLOCK 0:永久阻塞;$:表示获取最新的数据

127.0.0.1:6379> xadd s2 2-1 kl mn
2-1
127.0.0.1:6379> xread streams s2 0-1
s2
1-2
ef
gh
2-1
kl
mn
127.0.0.1:6379> xread count 1 streams s2 0-1
s2
1-2
ef
gh
127.0.0.1:6379> xread block 0 streams s2 $

被阻塞在那了,等待新数据进来

2.6 xgroup 和 xreadgroup

  • 创建一个消费组
    xgroup [CREATE key groupname id] 将key中指定ID后面的元素加入到消费组中
  • 从消费组中读取数据
    xreadgroup GROUP group consumer [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]
    需要写出消费组名字、添加消费者名字
    > 表示读取所有
    被一个消费者读取了就不能被其他消费者读取了
127.0.0.1:6379> xgroup create s1 test1 1647422390375-0 # 将指定ID之后(不包括指定ID)的数据加入到消费组
OK
127.0.0.1:6379> xreadgroup group test1 cons1 streams s1 >
s1
1647422691708-0
一炉造化荒天
默
1647424384713-0
一身风骨
擎天破
127.0.0.1:6379> xreadgroup group test1 cons1 streams s1 1647422390375-0
s1
1647422691708-0
一炉造化荒天
默
1647424384713-0
一身风骨
擎天破
127.0.0.1:6379>

相关文章

  • Redis5数据类型6-Stream

    1. Stream 类型介绍 Stream是Redis5.0 引入的一个新的数据类型,官方把它定义为:以更抽象的方...

  • Redis(二)-基本数据类型

    概述 本节主要分析Redis5大数据类型(对应上一节分析的RedisObject中Type属性:String/Li...

  • Redis5数据类型1-String

    上次说到Redis5提供六种数据类型来存储值:string字符串类型、hash散列类型、list列表类型、set集...

  • Redis Stream类型的使用

    一、背景 最近在看redis这方面的知识,发现在redis5中产生了一种新的数据类型Stream,它和kafka的...

  • Redis5数据类型3-Hash

    1. Hash散列 是指Redis中存储的value值是Hash散列类型的。而Hash也有自己的数据结构: 它是由...

  • Redis5数据类型2-List

    1. List简介 Redis中List是基于Linked List实现,双向无环链表,其中元素是字符串类型。特点...

  • Redis5数据类型5-SortedSet集合

    1. SortedSet集合介绍 SortedSet集合与Set集合类似,有以下特点: 数据是有序的,无重复的 每...

  • Redis5数据类型4-Set集合

    1. Set集合介绍 Set数据有几个特点: 无序的、去重的 元素是字符串类型 最多包含232-1个元素 2. S...

  • mac和centos7 安装redis5

    mac 安装redis5 安装 修改redis密码, 查找requirepass 启动redis centos7 ...

  • centos7安装redis5

    1. 下载redis5最新版:下载地址[http://download.redis.io/releases/] 2...

网友评论

      本文标题:Redis5数据类型6-Stream

      本文链接:https://www.haomeiwen.com/subject/ulbpdrtx.html