3

我通过 redis-py 使用 Python 中的 Redis 将 JSON 存储在排序集中。

一切正常,直到我尝试从 Redis 中获取一定数量的数据。


redis.StrictRedis(host='localhost', port=6379, db=12) 
redis_client.zrange('key', 0, 20, 'desc')

可以正常工作,因为我只要求 20 个条目。

一旦我尝试超过 35 的任何东西,我就会得到:

ConnectionError: Socket closed on remote end

我已经尝试通过将查询“分块”成 5 个一组来解决这个问题,但似乎我对 Redis 的访问速度非常快,有很多 5 个查询,这仍然会导致异常。

我是否以某种方式 DDOSing redis?


我在 Windows 和 Ubuntu 上都试过了。

上周我实际上一次处理了多达 100 个条目,并且如果我以 10 个为一组进行分块,那么我的 Redis 服务器似乎变得更加敏感。


这是一个重现错误的小脚本。

import redis
import ujson as json

r = redis.StrictRedis(host="localhost", port=6379, db=12)
dummy_json = {"data":"hfoiashflkasdjaisdäjpagufeiaghaifhaspdas", 
          "more": "sdasdpjapsfdjapsofjaspofjsapojfpoasjfpoajfp",
          "more1": "sdasdpjapsfdjapsofjaspofjsapojfpoasjfpoajfp",
          "more2": "sdasdpjapsfdjapsofjaspofjsapojfpoasjfpoajfp",
          "more3": "sdasdpjapsfdjapsofjaspofjsapojfpoasjfpoajfp",
          "more4": "sdasdpjapsfdjapsofjaspofjsapojfpoasjfpoajfp"}

for score in xrange(0, 6000):
    dummy_json["score"]=score
    r.zadd("test", score, json.dumps(dummy_json))

result = r.zrange('test', 0, 200, 'desc')
print result

您会看到,如果您dummy_json一次保留更少的数据或请求更少的条目,异常就会消失。

4

1 回答 1

0

好的,我完全清除了 redis 并重新安装 -> 错误消失了。我必须在某个睡眠不足的地方更改配置。谢谢 !

于 2014-06-14T14:52:10.280 回答