redis-py - 连接错误:远程端关闭了套接字 - 过载?
我正在通过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条数据的速度太快,还是会导致这个错误。
难道我是在无意中对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
存储的数据少一些,或者一次请求的条数少一些,错误就会消失。
1 个回答
0
好的,我把redis完全卸载了,然后重新安装了一遍——错误就没了。 我一定是在某个没睡好的时候改了配置。谢谢!