Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么';s在Redis频道中发布/订阅时消息的大小限制_Python_Redis_Publish Subscribe - Fatal编程技术网

Python 什么';s在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发布/订阅,这引起了我的一个担忧,当在redis频道中发布/订阅时,消息的大小限制是多少。限制是否等于计算机的可用内存?或者在配置文件的某个地方会有一个阈值。谢谢

更新答案

在我下面的原始答案之后,我找到了实际的答案。
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!!