gpt4 book ai didi

python - REDIS错误: WRONGTYPE Operation against a key holding the wrong kind of value

转载 作者:行者123 更新时间:2023-12-02 11:37:07 34 4
gpt4 key购买 nike

当我像这样将对象存储到 Redis 时,它工作正常

payload = {'age': 12}
key = 'animals:cow'
r.hmset(key, payload)

但是当我通过连接 2 个字符串创建 key 时

payload = {'age': 12}
key = 'animals:' + 'cow'
r.hmset(key, payload)

我收到错误

redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value

key 字符串与第一个示例中的相同时,为什么第二个示例会出错?

最佳答案

我无法重现您的问题。也许您正在混合字符串和哈希方法?这是我的环境:

  • Python 3.6.5
  • Redis 稳定版 5.0.5

我使用了您的确切代码,但我在上面添加了此代码:

from redis import StrictRedis
r = StrictRedis(host="localhost", port=6379, db=0)

-你的代码对我有用!
-也许你在 hmset 之前使用了不同的 set 方法?
-Redis 不仅仅是一个普通的键值存储;在传统的键值存储中,我们将字符串键与字符串值相关联。然而,Redis 为我们提供了一些额外的选项,这些选项之间的不兼容可能会导致错误。 https://redis.io/topics/data-types-intro
-除非您有隐藏字符或特殊的 unicode 版本不同的东西,否则 #1 和 #2 之间没有区别:
1.key = 'animals:cow'
2.key = 'animals:' + 'cow'

由于您未共享代码中的元素,您可能会与 Redis 发生类型冲突;即,也许您设置了一种方式,然后尝试设置另一种方式。在 Redis 中设置值的方法有很多种。如果我们设置一种方式,然后设置另一种方式(使用不同的方法),就会发生错误。以下是如何在 Redis 中设置键和值的一些示例:

  • 如果值是字符串类型 -> SET <key> <value>
  • 如果值是字符串类型 -> MSET <key> <value> [key value ...]
  • 如果值是哈希类型 -> HSET <key> <field> <value>
  • 如果值是哈希类型 -> HMSET <key> <field> <value> [field value ...]
  • 如果值是列表类型 -> SETRANGE <key> <offset> <value>
  • 如果值是二进制类型 -> SETBIT <key> <offset> <value>

尝试获取以不同方式设置的内容时出现的相关问题: WRONGTYPE Operation against a key holding the wrong kind of value php

关于python - REDIS错误: WRONGTYPE Operation against a key holding the wrong kind of value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47879894/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com