跳转到主要内容

redis流记录

项目描述

Redis Record

此功能允许您记录Redis流和命令,以便您可以稍后轻松回放它们。

底层,它使用mcap或zip文件作为存储格式。

入门 - 使用Python

安装redis-record包

pip install redis_record

遍历记录

from redis_record.storage import get_player

# open your recording
recording_dir = 'my-recordings'
name = 'my-favorite-recording'
with get_player(name, recording_dir) as player:
    # you can read messages like this
    stream_id, timestamp, data_bytes = player.next_message()

    # or just iterate over them like this
    for stream_id, timestamp, data_bytes in player:
        ...

配置您的环境

默认情况下,我们假设Redis可以通过localhost:6379访问,但如果不是这种情况,您可以很容易地更改它。

export REDIS_HOST=localhost
export REDIS_PORT=6379

每个命令也可以接受--host localhost --port 6379参数。

记录

要开始按需记录

python -m redis_record.record my_recording

要停止,只需中断脚本(Ctrl-C)。

这将创建一个位于./recordings/my_recording.mcap的文件。

回放

要将文件回放到系统中,请执行

python -m redis_record.replay my_recording

我上周记录了什么?

列出记录名称。

python -m redis_record list

获取有关记录的信息。

python -m redis_record info my_recording

入门 - 使用Docker

记录器设计为长时间运行的过程,这意味着您可以将它部署为Docker容器,并仅使用redis命令来控制它。

如果您希望远程控制记录并始终将数据保存到同一位置,这将非常有用。

git clone https://github.com/beasteers/redis-record.git
cd redis-record

docker-compose up -d
# to observe the recording process
docker logs redis-record

记录

要开始记录,请执行

python -m redis_record start my_second_recording

要停止记录,请执行

python -m redis_record stop my_second_recording

回放

目前,回放容器不是一个长时间运行的容器,因此您仍然需要像上面那样调用它

python -m redis_record.replay my_recording

记录不仅仅是流

前面的方法旨在捕获XADD命令(添加到Redis流中的数据)。如果您想捕获其他Redis命令,我们可以利用Redis的MONITOR命令来捕获所有命令。

记录

python redis_record.record.monitor my_other_recording

默认情况下,它将捕获任何SET命令变体(如xadd, set, hmset, hset, hsetnx, lset, mset, msetnx, psetex, setbit, setrange, setex, setnx, getset, json.set, json.mset),但很容易进行更改!

python redis_record.record.monitor my_other_recording --record-cmds '[xadd,set]'

最初我只是打算做[xadd,set],但考虑到作为默认值尝试覆盖更通用的用例会更好。

回放

用于回放

python redis_record.replay.monitor my_other_recording

压缩格式

目录结构如下

recordings/
  my_recording/
    data_stream_1/
      12345678-0_12456789-0.zip
      12456789-0_12567890-0.zip
      ...
    my_other_stream/
      ...

压缩文件内部包含Redis时间戳作为文件名,数据是流中'd'键的序列化字节。

待办事项

  • 记录过期(例如,在1分钟的无操作后自动停止记录)
  • S3记录文件存储
  • 替代导出器 - 例如mp4 - 但需要一致/通用格式。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

redis_record-0.0.6.tar.gz (18.5 kB 查看哈希值

上传时间

由以下支持