使用 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,但它应该是有道理的。
在使用 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,但它应该是有道理的。