redis其他问题

Posted THISISPAN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis其他问题相关的知识,希望对你有一定的参考价值。

如何解决redis高并发客户端频繁time out?

现在业务上每天有5亿+的请求,平时redis的操作在2K+每秒左右。到了高峰有3K+,这时候客户端就会频繁的报connect time out的异常。
但是,资料上说redis可以达到10W每秒。3K远远不到w这个级别啊,请问有什么建议优化现在的情况么?
答: 答:你可以把你应用的部署环境描述下,使用什么样的客户端,长连接还是短连接,redis是单机环境还是集群环境,redis是否配置了持久化,什么样的持久化方式,还有就是redis服务器的硬件设施,把这些描述清楚然后再分析原因。
 
最近刚在一个大型活动中大量使用了Redis,前几次线上高并发模拟的确出现了类似题主的问题。修正方式有二:
1.服务器对TCP和HTTP的限制(直接拒绝或超时)
2.Redis对并发数的限制(maxclients参数,Once the limit is reached Redis will close all the new connections sending an error ‘max number of clients reached‘.)

对了,我的平台是Windows+.Net+Redis(ServiceStack)


Redis的单线程属性

Redis 使用了单线程的设计, 意味着单线程服务于所有的客户端请求,使用一种复用的技术。这种情况下redis可以在任何时候处理单个请求, 所以所有的请求是顺序处理的。这和Node.js的工作方式很像, 所有的产出通常不会有慢的感觉,因为处理单个请求的时间非常短,但是最重要的是这些产品被设计为非阻塞系统调用,比如从套接字中读取或写入数据。

我提到过Redis从2.4版本后几乎是单线程的,我们使用线程在后台运行一些效率低下的I/O操作, 主要关系到硬盘I/O,但是这不改变Redis使用单线程处理所有请求的事实。

 

总结:就是reids本身性能没有问题,处理并发能力ok,就是跨服务器远程访问其他服务器reids时,并发大了,网络延迟等,会出现取reids卡死。

以上是关于redis其他问题的主要内容,如果未能解决你的问题,请参考以下文章

Redis设置允许其他服务器访问

我在共享主机上看到其他人的 Redis 数据是不是正常? [关闭]

PHP - Redis/Memcachedb/Mongodb 或其他持久存储来存储计数器

Redis分布式缓存知识拓展2 -- 处理其他缓存问题

安装源码包(这里主要写了redis,其他都一样的操作)

Redis小结