spring 数据反应 Redis 模板中没有限制流大小的 maxlen 选项

No maxlen option to limit stream size in spring data reactive Redis Template

我正在尝试使用反应式 Redis 模板 spring data redis。但是,到目前为止,我没有成功找到用于限制流大小的 Xargs

Base lettuce 实现在本机实现中具有该选项:

commands
    .xadd(streamKey, XAddArgs.Builder.maxlen(200L), eventKey,
        record);

但是,此选项在 RedisTemplate AFAIK 中不可用。 maxlen 选项是不可避免的,因为流可能呈指数增长。

如果有人遇到过,能指点一下吗?

谢谢大家

RedisTemplate 的[StreamOperations][1] 接口不支持XADDMAXLEN

您可以 pipeline the add(...) with trim(K key, long count) (XTRIM) 获得类似的效果。两个命令会同时发送,所以你只有一个往返时间。

XADD 相比,

XTRIM 是一项昂贵的操作。考虑不时地根据单独的逻辑而不是每个 XADD.

进行修剪

遗憾的是,MAXLEN ~ 似乎也不受支持,因此我们只能在 RedisTemplate 上进行精确计数修整。