【问题标题】:How to add multiple values into one key using Redis如何使用 Redis 将多个值添加到一个键中
【发布时间】:2020-08-28 15:28:13
【问题描述】:

我一直在试图弄清楚如何将多个值放入一个键中,例如:

{
    "fruit": {
        "tomato": {
            "Color": "red",
            "Price": "100"
        },
        "banana": {
            "Color": "yellow",
            "Price": "150"
        }
    }
}

目前我目前的代码是:

r = serialized_redis.MsgpackSerializedRedis(host='localhost', port=6379, db=0)
r.set("fruit", {"tomato": {"Color": "red", "Price": "100"}})
r.set("fruit", {"banana": {"Color": "yellow", "Price": "150"}})

问题在于,每次我执行 r.set 时,它似乎都会替换,这意味着当我运行此代码时,它只会设置为:

{
    "fruit": {
        "banana": {
            "Color": "yellow",
            "Price": "150"
        }
    }
}

所以即使我做了一组“番茄”,它也会被“香蕉”取代,因为它是最新的 SET。

我的问题是,我怎样才能将它添加到相同的 Key 但具有不同的值,以便所有内容都在同一个键中但它具有不同的“furits”?

{
    "fruit": {
        "tomato": {
            "Color": "red",
            "Price": "100"
        },
        "banana": {
            "Color": "yellow",
            "Price": "150"
        }
    }
}

【问题讨论】:

  • 这可能会有所帮助(即使它不使用 py-redis):stackoverflow.com/questions/20271372/redis-list-of-nested-keys
  • 您也可以随时将字典存储为 JSON 字符串。
  • @Timbolt 是的,但是如果我只想像示例中所示的那样添加一个值等,那么如果我使用 set,我可能无法做到这一点? - 我确实很难理解你显示的链接:(
  • 正确,您需要将 JSON 读入字典,修改字典并再次插入整个 JSON。这里可能不是一个很好的解决方案,但仍然很高兴知道,因为在其他情况下使用此方法非常方便。

标签: python redis


【解决方案1】:

您可以为此使用哈希

hmset fruit tomato your_json_serialized_here
hmset fruit orange ...

你也可以像这样hmset fruit apple 1 banana 2 orange 3 用多个水果做hmset

用hmget从hash中访问数据是这样的hmget fruit orange banana apple

【讨论】:

  • 我不确定这将如何工作?我试图做r.hmset("fruit", {"tomato": {"Color": "red", "Price": "100"}}) 但返回WRONGTYPE Operation against a key holding the wrong kind of value 我错过了什么?
  • 您必须序列化对象或将其字符串化hmset fruit tomato <the-json-stringify-of-object"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
  • 2017-01-04
相关资源
最近更新 更多