我们正在尝试通过 redis-py 包将大小为 2.3GB 的腌制对象设置到 redis 中。遇到以下错误。
BrokenPipeError:[Errno 32] 损坏的管道
redis.exceptions.ConnectionError:写入套接字时出现错误 104。对等方重置连接。
我想了解根本原因。是由于服务器端或客户端的输入/输出缓冲区限制吗?是因为 RESP 协议的限制吗?是否允许将 2.3 Gb 的单个值(字节)存储到 Redis 中?
导入redis
r = redis.StrictRedis(host='10.XXX', 端口=7000, db=0)
pickled_object = pickle.dumps(obj_to_be_pickled)
r.set('some_key', pickled_object)
客户端错误
BrokenPipeError:[Errno 32] 损坏的管道
/usr/local/lib/python3.4/site-packages/redis/connection.py(544)send_packed_command()
self._sock.sendall(项目)
服务器端错误
31164:M 04 Apr 06:02:42.334 - 来自客户端的协议错误:id=95 addr=10.2.130.144:36120 fd=11 name=age=0 idle=0 flags=N db=0 sub=0 psub=0 multi =-1 qbuf=16384 qbuf-free=16384 obl=42 oll=0 omem=0 events=r cmd=NULL
31164:M 04 Apr 06:07:09.591 - 来自客户端的协议错误:id=96 addr=10.2.130.144:36139 fd=11 name= age=9 idle=0 flags=N db=0 sub=0 psub=0 multi =-1 qbuf=40 qbuf-free=32728 obl=42 oll=0 omem=0 events=r cmd=NULL
Redis 版本:3.2.8 / 64 位