我通过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组中的查询来解决这个问题,但似乎我很快就遇到了很多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
保留较少的数据或一次请求较少的条目,则异常将消失。
答案 0 :(得分:0)
好的,我完全清除了redis并重新安装 - >错误消失了。 我必须在睡眠不足的地方改变配置。谢谢!