Python 什么';s在Redis频道中发布/订阅时消息的大小限制
我目前正在我的一个项目中实现redis发布/订阅,这引起了我的一个担忧,当在redis频道中发布/订阅时,消息的大小限制是多少。限制是否等于计算机的可用内存?或者在配置文件的某个地方会有一个阈值。谢谢 更新答案 在我下面的原始答案之后,我找到了实际的答案。Python 什么';s在Redis频道中发布/订阅时消息的大小限制,python,redis,publish-subscribe,Python,Redis,Publish Subscribe,我目前正在我的一个项目中实现redis发布/订阅,这引起了我的一个担忧,当在redis频道中发布/订阅时,消息的大小限制是多少。限制是否等于计算机的可用内存?或者在配置文件的某个地方会有一个阈值。谢谢 更新答案 在我下面的原始答案之后,我找到了实际的答案。redis.conf中有一个配置参数,名为: client-output-buffer-limit 您可以通过以下方式进行检查: config get client-output-buffer limit "normal 0 0 0
redis.conf
中有一个配置参数,名为:
client-output-buffer-limit
您可以通过以下方式进行检查:
config get client-output-buffer limit
"normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
发布/订阅后的33554432是发布/订阅客户端的最大缓冲区大小,8388608是软限制,超过该限制的时间不得超过60秒
因此,如果您使用以下命令提高限制,我下面的答案将发生变化:
config set client-output-buffer-limit "normal 0 0 0 slave 268435456 67108864 60 pubsub 53554432 8388608 60"
我没有做过任何测试,以确定这是否明智、安全甚至合理,但我认为这与答案有重大关系
原始答案
我不知道限制在哪里出现,但仅供参考,我使用redis cli
客户端进行了一些简单的测试,订阅方式如下:
redis-cli SUBSCRIBE myStream
dd if=/dev/zero bs=$((1024*1024)) count=20 | redis-cli -x PUBLISH myStream
我以1MB的倍数发送数据,如下所示:
redis-cli SUBSCRIBE myStream
dd if=/dev/zero bs=$((1024*1024)) count=20 | redis-cli -x PUBLISH myStream
因此,上面的命令在20MB时有效,但以下21MB的命令失败:
dd if=/dev/zero bs=$((1024*1024)) count=21 | redis-cli -x PUBLISH myStream
订阅服务器已断开与消息的连接:
Error: Server closed the connection
我称之为“经验”答案。仅供参考,我自己做了实验,在我的机器上(Debian 5.4.8-1)(可能因操作系统和redis版本而异),它会导致redis ConnectionError:连接被服务器关闭。这非常有用,谢谢@Mark!!