【问题标题】:RedisJSON - MGET Example?RedisJSON - MGET 示例?
【发布时间】:2021-05-14 13:33:04
【问题描述】:

我正在使用 RedisJSON,但我不知道如何按照 official site of the plugin 上的文档获取为多个键存储的完整 JSON 值。

例如,来自redis-cli

redis-cli-1234> json.set k1 . '{"a":"a" }'
OK
redis-cli-1234> json.set k2 . '{"b":"b" }'
OK

现在我想运行一个命令,一次性获取 k1、k2(所需值的键)并返回它们的值:

1) "{\"a\":\"a\"}"
2) "{\"b\":\"b\"}"

但我不知道怎么做。

我试过了:

redis-cli-1234> json.mget k1 k2 .

还有其他一些东西,但我只能让 redis 返回一个值或另一个值,bot 不能同时返回。

有什么想法吗?

【问题讨论】:

    标签: redis redisjson redislabs


    【解决方案1】:

    https://redis.io/topics/transactions

    redis-cloud:6379> multi
    OK
    redis-cloud:6379(TX)> json.get k1
    QUEUED
    redis-cloud:6379(TX)> json.get k2
    QUEUED
    redis-cloud:6379(TX)> exec
    1) "{\"a\":\"a\"}"
    2) "{\"b\":\"b\"}"
    

    【讨论】:

    • 谢谢。由于某种原因,这对我不起作用,出现此错误: redis-cloud-85> multi OK redis-cloud-85> json.get k1 QUEUED redis-cloud-85> json.get k2 (error) CROSSSLOT Keys in请求不散列到同一个槽(context='within MULTI', command='json.get', original-slot='12706', wrong-slot='449', first-key='k1', 违反-key='k2')
    • @orcaman 似乎您正在使用 Redis 集群运行。 Redis Transaction 不能有跨槽操作。您可以键入哈希标签,请参阅:redis.io/topics/cluster-spec#keys-hash-tags
    • @GuyKorland 谢谢!是的,在 Redis Labs 上运行 :-)。 mget 真的不适用于 RedisJSON 插件吗?或者至少没有像我预期的那样工作?我现在切换到使用标准 SET 和 MGET(而不是 JSON.SET 和 JSON.MGET 插件功能)。
    猜你喜欢
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    相关资源
    最近更新 更多