0%

Redis使用最佳实践

一、Redis Cluster内尽量避免使用大Hash对象

一个Hash对象对应一个key,在Redis Cluster内,该Hash对象会整体存储于某个节点上。因此,在Redis Cluster内,如果使用大Hash对象(即使用内存量巨大的Hash对象),会导致这部分内存不能均匀地分布于整个Redis Cluster。

二、禁止一次性请求大量数据

禁止一次性请求大量数据,否则会出现“Read timed out”。
出现“Read timed out”的原因是:在访问Redis请求时,本地会开启一个计时器,当超过设定的“超时时间”,还未收到请求返回结果,就会出现“Read timed out”。
一次性请求大量数据,从请求发出到收到返回结果会耗费很长时间,最终会导致出现“Read timed out”。
比如使用HMGET(时间复杂度为O(N)),HKEYS(时间复杂度为O(N)),HGETALL(时间复杂度为O(N))等命令时,很容易出现一次性请求大量数据的情形,导致“Read timed out”。为了避免这种情况,可采用“分批请求数据(‘Pipelining HGET命令’或者‘分批传FIELDS给HMGET’)”,“使用替换命令(比如使用HSCAN代替HKEYS)”等方式来解决。

备注:
“Redis服务器存在性能问题,Redis服务器与本地之间存在网络问题”等也会导致出现“Read timed out”。


参考文献: [1]http://redis.io/commands/scan [2]https://www.javacodegeeks.com/2015/09/redis-clustering.html
您的支持将鼓励我继续分享!