如何解决Redis空闲连接(redis空闲连接)
过多的问题
随着软件产品的使用不断普及,Redis的应用也更加广泛,它提供了一种简单高效、开源、可靠的分布式内存存储平台,但也有许多的问题,如Redis空闲连接过多问题,空闲连接是指客户端在服务器上建立连接,但不进行操作,只未断开连接,导致服务器上开启大量空闲连接。如何解决Redis空闲连接过多的问题呢?
1、设置cli_idle_timeout,即超时时间,设置为小于100毫秒;
set cli_idle_timeout 0
(设置cli_idle_timeout的最大值为100毫秒)
2、设置timeout,比如在应用层设置不要超过一小时,一小时之后应用端会关闭连接;
set timeout 3600 # 设置超时时间为1h/60min
3、使用短连接,就是每次客户端访问redis就产生一个新的连接,完成操作后关闭连接;
# 生成连接
$redis = new Redis();$redis->connect('127.0.0.1',6379);
# 关闭连接
$redis->close();
4、服务端对客户端做心跳探测,如果超过一定时间客户端未响应,则服务端自动关闭连接;
# 设置心跳检测的断开时间:
set client-timeout 10
# 查看客户端的last action time:get client last action 1568105396
5、客户端出现异常断开,比如代码bug或机器重启,此时redis的客户端连接仍然存在,定时重新检测所有连接,若超时未操作,则关闭;
SETCLIENTNAME | identify-myself
这个命令会返回一个连接ID,我们可以用这个连接ID来校验数据库连接是否正常。
Redis空闲连接过多的解决方案大体上就是这些,建议采用第2、3、4、5种方法,让客户端和服务器自身自我控制好连接状态,以免导致Redis连接资源浪费,影响系统性能及功能实现。