redis-py - 连接错误:远程端关闭了套接字 - 过载?

3 投票
1 回答
1519 浏览
提问于 2025-04-18 09:47

我正在通过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完全卸载了,然后重新安装了一遍——错误就没了。 我一定是在某个没睡好的时候改了配置。谢谢!

撰写回答