首页 > 解决方案 > 没有 maxlen 选项来限制弹簧数据反应 Redis 模板中的流大小

问题描述

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

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

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

RedisTemplate但是,此选项在AFAIK中不可用。该maxlen选项是不可避免的,因为流可能会成倍增长。

如果有人遇到过,你能指出我正确的地方吗?

谢谢大家。

标签: springredisspring-webfluxspring-data-redis

解决方案


RedisTemplate的接口中不支持XADDwith 。MAXLEN[StreamOperations][1]

您可以将with ( )流水线化以获得类似的效果。这两个命令将同时发送,因此您只有一个往返时间。add(...)trim(K key, long count)XTRIM

XTRIM与 相比是一项昂贵的操作XADD。考虑不时地在单独的逻辑上进行修剪,而不是使用 every XADD

可悲的是,MAXLEN ~似乎也不支持,所以我们只在 RedisTemplate 上进行精确计数修剪。


推荐阅读