使用 Spring Data Redis 在 Redis 中执行 SCAN 操作时出现 ERR 语法错误

ERR syntax error while performing SCAN operations in Redis using Spring Data Redis

在使用 Spring Data Redis 处理 Redis 时,我尝试扫描服务器中的哈希数据(类似于 CLI 中的 HSCAN)-

Cursor<Entry<Object,Object>> scan = redisTemplate.opsForHash().scan("student", new ScanOptionsBuilder().count(0).match("*").build());

虽然 运行 我得到以下错误 -

redis.clients.jedis.exceptions.JedisDataException: ERR syntax error

谁能帮我解决这个问题。

有很多相关的讨论,但其中none个给出了明确的答案。

您应该使用 count > 0,或者根本不使用 count(默认为 10)。

ScanOptions.java 来看,如果使用了计数,它会在没有任何检查的情况下传递给命令。

对 redis-cli 的快速检查显示 COUNT 0 抛出 ERR syntax error

> hset hash1 f v
(integer) 1
> hscan hash1 0 MATCH * COUNT 0
(error) ERR syntax error
> hscan hash1 0 MATCH * COUNT 1
1) "0"
2) 1) "f"
   2) "v"

有关详细信息,请参阅 SCAN > The COUNT option。虽然它没有说明它必须大于 0,但它应该是有道理的。