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

3

在使用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

有人能帮忙解决这个问题吗?

虽然有很多相关的讨论,但没有一个能提供清晰的答案。

1个回答

1

你应该使用count > 0,或者不使用count(默认是10)。

从查看ScanOptions.java后,如果使用count,则会将其传递给命令而没有任何检查。

在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"

请参阅 扫描 > 计数选项以获取更多详细信息。虽然它没有声明必须大于0,但这是有道理的。

当我使用count > 0或删除计数参数时,通过SCAN返回的值为 - org.springframework.data.redis.core.ConvertingCursor@555ec143。我想要打印数据方式与在CLI上打印类似。@LeoMurillo - shreyas.k
您需要多次调用,同时捕获键。请参阅https://www.programcreek.com/java-api-examples/index.php?api=org.springframework.data.redis.core.ScanOptions上的示例。 - LeoMurillo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接