Redis如何处理客户端连接( 二 )

  • Pub/Sub客户端有默认的32兆字节的硬限制及每60秒8兆字节的软限制 。
  • 从机有默认的256兆字节的硬限制及每60秒64兆字节的软限制 。
  • 可以在运行时改变这些限制 , 使用CONFIG SET命令或者修改redis.conf以永久地改变它 。见redis.conf中更多的关于如何设置限制的介绍 。
  • 搜索缓冲硬限制
    【Redis如何处理客户端连接】每一个客户端也受到搜索缓冲限制 。这是个不可配置的硬限制 , 当客户端搜索缓冲(这是个我们用来积累客户端的命令的缓冲)达到1GB的时候它将关闭连接 , 这只是个极限限制 , 用来避免当客户端或者服务端软件出错导致服务器崩溃的情况 。
    客户端超时
    最近版本的Reids在默认情况下不会在客户端空闲很久后关闭连接;连接将永久保留 。不过假如你不喜欢这种行为 , 你可以设置一个超时时间 , 这样当客户端空闲超过设置的几秒后 , 客户端连接就会被关闭 。
    你可以在redis.conf中配置这个限制或者简单的使用CONFIG SET timeout。记住这个超时时间只适用于多个客户端并且它不支持Pub/Sub客户端, Pub/Sub连接是推送类型的连接 , 因而客户端空闲是正常的 。
    即使在默认情况下连接是不受超时时间限制的 , 但是有两种情况设置超时是有意义的:
    • 关键任务应用 , 客户端软件可能因为Redis连接饱和而造成出错 , 造成服务中断 。
    • 如果一个客户端出错使得服务器因为空闲连接而饱和 , 使得无法与服务器交互 , 此时可以作为一个检错机制去连接服务器 。
    超时并非非常准确:Redis避免设置计时器或者运行O(N) 算法去轮询检测客户端是否超时, 所以检查是渐近的一部分一部分完成的 。这意味着有可能当超时时间设置为10秒 , 客户端的连接将在稍晚的时候被关闭 , 例如当很多客户端在同一时间连接的话 , 可能12秒才被关闭 。
    客户端命令
    Redis客户端命令允许检查所有连接的客户端的状态、关掉指定的客户端的连接、设置连接的名称 。假如你使用一定规模的Redis的话这是个很强大的排错工具
    CLIENT LIST命令用来获得连接的客户端列表及它们的状态:
    redis 127.0.0.1:6379> client listaddr=127.0.0.1:52555 fd=5 name= age=855 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=clientaddr=127.0.0.1:52787 fd=6 name= age=6 idle=5 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0



    推荐阅读