1

环境:Ubuntu 10.04 64bit,Python Redis 客户端 2.4.1,Redis 2.4.8,Python 2.6.5

问题描述:

我有一些大的 Python 字典(key1:value1, key2:value2, ...)。每个键都是一个短字符串,每个值都是一个 simplejson 转储的长字符串。我想将字典存储到不同的 redis 数据库中,我使用了以下代码:“r.mset(the_dictionary)”。它适用于一个字典,但是,对于另一个字典,它会提示“对等连接重置”错误。我很确定字典的格式相同。我觉得有这样一个致命的错误很奇怪。

此外,我尝试了以下步骤来确定问题来源:

  1. 我将每个字典从刷新的数据库(每个字典的一个新服务)中分别插入到 Redis 中。我仍然得到了第一个字典插入工作,第二个失败了。
  2. 我怀疑问题出在第二个字典的内部,所以我尝试进行一些变量类型和字符串长度检查,所有键和值都通过了简单检查。但我仍然有第二个字典的存储失败。
  3. 如果我将字典值更改为相同的常量变量(例如,所有值都设置为“abc”),那么存储工作。
  4. 如果我为第二对中的每个键和值使用 r.hmset,它也可以工作。

但是为什么“r.mset(the_dictionry)”可以在一个字典上工作,但在另一个字典上却失败了?

字典的值一定有问题或者 Python 客户端的一些错误。

我不知道如何继续确定问题来源。请给我一些建议。

我搜索了谷歌并尝试了redis服务器日志,但仍然无法通过。

======对反馈的响应====== 这是代码片段:

db3 = redis.Redis(db=2)
db3.flushdb()
db3.mset(oov_dist_dict)

但是如果我按照反馈拆分字典并插入redis,它可以工作,你能解释一下吗?我在官方文件中没有看到任何声明。

4

0 回答 0