Redis5 的新特性 Redis Stream

羅裡 發表於 2020-11-21
Redis

Redis Stream 介紹

Redis Stream 主要用於訊息佇列(MQ,Message Queue),Redis 本身是有一個 Redis 釋出訂閱 (pub/sub) 來實現訊息佇列的功能,但它有個缺點就是訊息無法持久化,如果出現網路斷開、Redis 當機等,訊息就會被丟棄。
簡單來說釋出訂閱 (pub/sub) 可以分發訊息,但無法記錄歷史訊息。
而 Redis Stream 提供了訊息的持久化和主備複製功能,可以讓任何客戶端訪問任何時刻的資料,並且能記住每一個客戶端的訪問位置,還能保證訊息不丟失。
Redis Stream 的結構如下所示,它有一個訊息連結串列,將所有加入的訊息都串起來,每個訊息都有一個唯一的 ID 和對應的內容:

在這裡插入圖片描述

Redis Stream 基本命令

  1. 使用 XADD命令向佇列新增訊息,如果指定的佇列不存在,則建立一個佇列,XADD 語法格式:

XADD luolistream * name luoli

  • luolistream 佇列名稱,如果不存在就建立
  • * 訊息 id,我們使用 * 表示由 redis 生成,可以自定義,但是要自己保證遞增性
  • name luoli 傳送的訊息
  1. 使用 XGROUP CREATE 建立消費者組

XGROUP CREATE luolistream group-1 0

  • 最後一個0表示從頭開始消費,也你可以使用$代替表示從尾部開始消費,只接受新訊息
  • 傳送進去的訊息需要建立一個消費組來對訊息進行消費,一個消費組中可以有多個消費者consumer,但是一個組中只會有一個消費者去消費掉當前的訊息,和Kafka很類似。
  1. 消費訊息

XREADGROUP GROUP group-1 consumer-luoli COUNT 1 STREAMS luolistream >

  • 會在group-1的消費組中建立一個消費者consumer-luoli來進行消費luolistream中的訊息。

以上就是簡單的一些命令,大家可以多敲多練習,後面我會整合Spring Boot