Redis `keys` 和响应式编程

Redis `keys` and reactive programming

我知道在 Redis 中应该避免使用 keys 命令,因为它是一个昂贵的操作。

但是,如果我在反应式编程(Spring Data Redis Reactive)中使用反应式驱动程序(Lettuce)怎么办,其中 keys returns 是 Fl​​ux?这仍然是一个“问题”吗?

Obs.:这对我来说不是真实情况。我只是想了解正确的行为,因为我刚刚开始接触反应性的东西。

提前致谢。

javadoc 中所述,即使在反应性环境中,scan 仍然优于 keys

IMPORTANT: It is recommended to use ReactiveRedisOperations.scan() to iterate over the keyspace as ReactiveRedisOperations.keys(Object) is a non-interruptible and expensive Redis operation.

keys 的问题实际上并不在客户端,而是在 Redis 方面。这就是为什么反应式客户端在这种情况下并没有真正发挥作用。虽然,scan 对于反应式客户端也更好,因为它可以根据背压请求新密钥。

但是你说的有道理,keys returns Flux有点令人困惑。基于 Redis 命令的语义,我宁愿期望 Mono<List> 作为 return 类型。