python - Broken Pipe 错误 Redis

标签 python sockets redis redis-py

我们正在尝试通过 redis-py 包将大小为 2.3GB 的 pickled 对象设置到 redis 中。遇到以下错误。

BrokenPipeError: [Errno 32] Broken pipe

redis.exceptions.ConnectionError: Error 104 while writing to socket. Connection reset by peer.

我想了解根本原因。是由于服务器端或客户端的输入/输出缓冲区限制吗?是因为 RESP 协议(protocol)有任何限制吗?是否允许将 2.3 Gb 的单个值(字节)存储到 Redis 中?

import redis

r = redis.StrictRedis(host='10.X.X.X', port=7000, db=0)

pickled_object = pickle.dumps(obj_to_be_pickled)

r.set('some_key', pickled_object)

客户端错误

BrokenPipeError: [Errno 32] Broken pipe

/usr/local/lib/python3.4/site-packages/redis/connection.py(544)send_packed_command()

self._sock.sendall(item)

服务器端错误

31164:M 04 Apr 06:02:42.334 - Protocol error from client: 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 - Protocol error from client: 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 位

最佳答案

Redis的String数据类型最大为512MB。

关于python - Broken Pipe 错误 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43204496/

相关文章:

python - 使用 python 在音频中查找语速和语调

java - ServerSocketChannel 已关闭,但 TCP ESTABLISHED 仍在

c++ - 用于保存客户信息的线程安全数据结构

mongodb - 统计系统的最佳数据库

python - 如何在 Django 中提供可下载的 zip 文件

c# - Unity3D : (Python.net) PythonException: ModuleNotFoundError

python正则表达式在数字与非数字相邻时添加空格

ios - 我可以编写使用 TCP/UDP 通信的 iPhone/iPad 应用程序吗?

redis - 增加 RedisGraph 中的节点属性

python - 使用 Redis 进行批量插入失败并出现奇怪的错误