Redis Streams

Presentations

Redis Streams

Redis logo

Info about Redis

Support for streams in Redis

Basic operations

Advanced operations

Messages

New commands

Support in other languages

Examples

redis-cli

xadd stream1 1 x 10 y 20
xadd stream1 2 x 10 y 20
xadd stream2 0-1 data first
xadd stream2 0-2 data second
xadd stream2 1-0 data third
xadd stream3 * x 1 y 2
xadd stream3 * x 2 y 1
xadd stream3 * x 3 y 0
xread streams stream3 0
xread BLOCK 0 streams stream3 $
xrange stream2 - +
xrange stream3 0-1 0-4
xrevrange stream1 + -
xread BLOCK 0 streams streamA streamB $ $
XADD streamZ * foo 42
XGROUP CREATE streamZ groupZ $

XADD streamZ * m 1
XADD streamZ * m 2
XADD streamZ * m 3
XADD streamZ * m 4
XADD streamZ * m 5
XADD streamZ * m 6

XREADGROUP GROUP groupZ consumer1 COUNT 1 STREAMS streamZ >
XREADGROUP GROUP groupZ consumer1 STREAMS streamZ >

XACK streamZ groupZ 1611603108014-0
XPENDING streamZ groupZ

Python

from walrus import Database

db = Database()
stream = db.Stream("streamX")

message_id = stream.add({"foo": 10,
                         "bar": 20})
print(message_id)
from walrus import Database

db = Database()
stream = db.Stream("streamX")

messages = list(stream)
print(messages)
from walrus import Database

db = Database()
stream = db.Stream("streamX")

message = stream.read(block=0, last_id="$")
print(message)
from walrus import Database

db = Database()
stream = db.Stream("streamY")

counter = 0

last_id = "0"

while True:
    messages = stream.read(block=0, last_id=last_id, count=1)
    message = messages[0]
    last_id = message[0]
    content = message[1]
    counter += 1
    if b"last" in content and content[b"last"] == b"y":
        break
from walrus import Database

db = Database()

cg = db.consumer_group("a-group", ["streamX"])
cg.create()
cg.set_id('$')

while True:
    messages = cg.read(block=0)
    for message in messages:
        print(message)