首页 > 数据库 >redis的Streams详细介绍

redis的Streams详细介绍

时间:2024-04-08 13:30:28浏览次数:19  
标签:key stream Redis redis Streams 详细 jedis ID mystream

Redis的Streams是一个日志类型的数据结构,它在Redis 5.0中被引入,用于存储并取回消息。这种数据结构让Redis可以成为消息队列系统和流处理系统。它是一个持久化、可复制、基于磁盘的、具有时间序列信息的日志系统。

Streams主要的命令包括:

  1. **XADD key ID field value [field value ...]**:向指定的stream中添加新的元素。

  2. **XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]**:从给定的stream中读取数据。

  3. XDEL key ID [ID ...]: 删除stream中的一个或多个消息。

  4. **XRANGE key start end [COUNT count]**:返回stream中在给定范围内的元素。

  5. **XGROUP CREATE key groupname lastDeliveredID [MKSTREAM]**:为一个stream创建一个新的消费者组。

例如:

# 添加元素
redis> XADD mystream * sensor-id 1234 temperature 19.8
"1526569495631-0"

# 读取数据
redis> XREAD COUNT 2 STREAMS mystream 0
1) 1) "mystream"
   2) 1) 1) "1526569495631-0"
         2) 1) "sensor-id"
            2) "1234"
            3) "temperature"
            4) "19.8"

# 创建消费者组
redis> XGROUP CREATE mystream mygroup 0
OK

这就是Redis Streams的一些基本介绍,它是一个非常强大的功能,可以应用于各种场景,例如日志收集,数据流处理等。

Java示例:

以下是一个如何使用 Java 通过 Jedis 连接 Redis 并进行 Streams 操作的示例:

import redis.clients.jedis.*;

public class Test {
  public static void main(String[] args) {

    // 连接到 Redis 服务
    Jedis jedis = new Jedis("localhost");
    System.out.println("连接成功");

    // 使用 XADD 命令添加元素
    StreamEntryID id = jedis.xadd("mystream", null, new HashMap<String, String>(){{put("sensor-id", "1234");put("temperature", "19.8");}}, 1000, false);
    System.out.println("添加元素成功,ID 为: " + id);

    // 使用 XREAD 命令读取数据
    List<Entry<String, StreamEntry>> list = jedis.xread(1, 1, new Entry<>("mystream", StreamEntryID.UNRECEIVED_ENTRY));
    for (Entry<String, StreamEntry> entry : list) {
      System.out.println("读取到数据 stream: " + entry.getKey() + ", ID: " + entry.getValue().getID() + ", fields: " + entry.getValue().getFields());
    }

    // 创建消费者组
    String result = jedis.xgroupCreate("mystream", "mygroup", null, false);
    System.out.println("消费者组创建结果: " + result);

    jedis.close();
  }
}

在这个例子中,我们首先创建了一个流 mystream 并添加了一个元素。然后我们读取 mystream 中的数据并打印出来。然后我们创建了一个消费者组 mygroup

请注意,需要引入 jedis 库并连接到一个运行的 Redis 服务以运行此代码。

标签:key,stream,Redis,redis,Streams,详细,jedis,ID,mystream
From: https://blog.csdn.net/weixin_37954941/article/details/137340139

相关文章

  • 运维系列(创建windows服务,亲测有效):Windows 安装Redis(图文详解)
    Windows安装Redis(图文详解)Windows安装Redis(图文详解)一、Redis是什么数据库?二、安装Redis1、下载地址2、安装过程2.1将下载的压缩包解压到一个文件夹中:2.2打开cmd指令窗口,进入到解压的那个文件夹里:2.3输入redis-serverredis.windows.conf:2.4部署Redis在windows下的......
  • 小游戏——俄罗斯方块(附带超详细源码,复制就可实现效果)
    用web前端基础的知识做个俄罗斯方块玩玩。先来看看实现的效果:俄罗斯方块 复制就可以实现所有效果哦!!!详细代码源码:<!DOCTYPEHTML><html><head><metacharset="utf-8"><title>俄罗斯方块小游戏JS版-孙也</title><script>window.onload=functi......
  • Redis的跳跃表
    在Redis中,有一种高效的数据结构叫做有序集合(zset)它是一种集合,其中每个成员(member)都会关联一个分数(score)。zset既可以快速地通过member找到该成员对应的分数,又可以按照分数的大小进行范围查询,这对于实现排行榜等功能非常有用。那么zset是如何实现这样的功能的呢?答案是跳跃......
  • 数据结构之二叉树 - 超详细的教程,手把手教你认识并运用二叉树
    目录1.树形结构(了解)1.1树形结构的概念(重要)1.2 树的表示形式(了解)1.3 树的应用2.二叉树(重点)2.1概念2.2两种特殊的二叉树2.3二叉树的性质2.4二叉树的存储2.5二叉树的基本操作2.5.1二叉树的遍历1.前序遍历2.中序遍历3.后序遍历4.层序遍历2.5.2......
  • 【知识点】Redis-缓存-缓存击穿
    缓存击穿:缓存中一个热点数据过期或失效时,由于该数据非常受欢迎,会有大量请求直接打到数据库上,导致数据库负载增大、相应变慢甚至瘫痪。解决方式:互斥锁在查询数据库之前首先获取分布式锁,更新redis之后再释放锁,可以保证数据的强一致性。优缺点:优点:强一致性缺点:性能差逻辑......
  • Redis持久化机制
    1.持久化机制Redis官方提供了两种不同的持久化方法来将内存的数据存储到硬盘里面分别是:-快照(Snapshot)-AOF(AppendOnlyFile)只追加日志文件1.1快照(Snapshot)1.特点这种方式可以将某一时刻的所有数据都写入硬盘中,当然这也是redis的默认开启持久化方式,保存的文......
  • Redis的前世今生(内存管理、持久化、高可用、集群 详解)一看就懂
    Redis的诞生:    redis的诞生和mysql脱不了关系,在redis还未出现时,用户的每次请求都是直接访问mysql,渐渐的人们发现,请求大部分都是读操作,而且很多都是重复的数据,磁盘的i/o是很慢的,所以人们就想,能不能学学cpu建立的缓存机制,mysql也搞一个缓存,就这样一个基于内存的数据库......
  • 为什么Redis 是单线程的以及为什么这么快?
    redis完全基于内存,绝大部分请求是纯粹的内存操作,非常快速.数据结构简单,对数据操作也简单,redis中的数据结构是专门进行设计的采用单线程模型,避免了不必要的上下文切换和竞争条件,也不存在多线程或者多线程切换而消耗CPU,不用考虑各种锁的问题,不存在加锁,释放锁的操作......
  • redis开发规约
    key设计1、可读性和可管理性#业务名:表名:idgetpersoninfo:person:12、简洁性减少key长度,建议不超过39字节例子humanresource:employee:88301->hr:emp_883013、特色字符key不要包含特殊字符(空格,换行,引号),建议使用英文与数字不同类型的应用场景 序列化JdkS......
  • Redis 一般有哪些使用场景?
    热点数据的缓存缓存是Redis最常见的应用场景,之所有这么使用,主要是因为Redis读写性能优异。而且逐渐有取代memcached,成为首选服务端缓存的组件。而且,Redis内部是支持事务的,在使用时候能有效保证数据的一致性。限时业务的运用redis中可以使用expire命令设置一个键的生存时间,......