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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | db1b5ebec210a43bd7a32288d700370f2e52315868b1e2bf2a8cf285404eca91 |
|
MD5 | 9c132e8c5e34780dc4f4019c24f37b49 |
|
BLAKE2b-256 | c7ac7e039736eefd1389adfac8fd32bbf453adefe82a7ae0b0b6a63a84dc5f5d |