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

标签 java redis jedis spring-data-redis key-value-store

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

谁能帮我解决这个问题。

有很多相关讨论,但没有一个提供明确的答案。

最佳答案

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

查看ScanOptions.java ,如果使用 count,则将其传递给命令而不进行任何检查。

快速检查 redis-cli 显示 COUNT 0 抛出 ERR 语法错误

> 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,但它应该大于 0,这是有道理的。

关于java - 使用 Spring Data Redis 在 Redis 中执行 SCAN 操作时出现 ERR 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59563986/

相关文章:

java - JPA-Hibernate-从 Select 语句生成的 ID 值

asp.net-core - ASP.NET Core DataProtection + Redis + 每台机器的多个 key

redis - 如何将用户添加到redis?

java - Redis集群配置

redis - JedisMovedDataException(将 sadd 与管道一起使用时)

java - Eclipse如何从代码生成UML图

java - JTextArea实时输出

java - android替换字符串中的多个字符

mysql - 如何频繁同步市场数据并显示为历史时间序列数据

authentication - ERR 客户端发送了 AUTH,但未设置密码