【问题标题】:ERR syntax error while performing SCAN operations in Redis using Spring Data Redis使用 Spring Data Redis 在 Redis 中执行 SCAN 操作时出现 ERR 语法错误
【发布时间】:2020-04-21 03:45:36
【问题描述】:

在使用 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 语法错误

谁能帮我解决这个问题。

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

【问题讨论】:

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


    【解决方案1】:

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

    通过查看ScanOptions.java,如果使用了count,则将其传递给命令而无需任何检查。

    快速检查 redis-cli 显示 COUNT 0 throws 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,但它应该是有意义的。

    【讨论】:

    • 当我使用count > 0或者去掉count参数时,SCAN返回的值是-org.springframework.data.redis.core.ConvertingCursor@555ec143 我希望数据的打印方式与在 CLI 上的打印方式类似。 @LeoMurillo
    • 您需要多次调用,同时捕获密钥。请参阅programcreek.com/java-api-examples/… 处的示例
    猜你喜欢
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 2012-06-24
    • 2020-07-30
    • 1970-01-01
    • 2021-03-04
    相关资源
    最近更新 更多