最近在项目上使用到了Redis缓存,在使用过程中遇到了一些问题,这里来总结一下。

1、Redis设置成Windows启动服务:

执行命令

redis-server --service-install redis.windows-service.conf --loglevel verbose

1、Redis运行一段时间之后,发现Redis Client连接不上了,报错 Error:max number of clients reached,首先想到的是,是不是在代码使用过程中没有释放掉空闲的Redis连接,然后检查代码,发现确实没有关闭连接,修改后的代码如下:

redis 连接数 限制 redis 客户端连接数_客户端

下图中的dispose是后来添加的:

redis 连接数 限制 redis 客户端连接数_redis_02

添加上释放代码之后又过了一段时间发现还是报同样的错误,于是用redis的控制台窗口查看当前所有的客户端连接情况:

redis 连接数 限制 redis 客户端连接数_C#_03

其中idle(以秒计算的空闲时长)竟然这么长时间。。很多空闲连接都没有被及时释放掉从而导致connected_clients非常高

查看redis的配置timeout (当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能)

redis 连接数 限制 redis 客户端连接数_redis_04

然后设置timeout

redis 连接数 限制 redis 客户端连接数_客户端_05

再次查看connected_clients

redis 连接数 限制 redis 客户端连接数_C#_06

连接数瞬间少了很多,至此该问题已解决。