首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

redis干缓存时的一点优化

2012-12-24 
redis做缓存时的一点优化?????? 最近集群上有个job,其中需要短时间内频繁访问缓存,大概7亿多次。我这边的缓

redis做缓存时的一点优化

?

????? 最近集群上有个job,其中需要短时间内频繁访问缓存,大概7亿多次。我这边的缓存是使用redis来做的,问题就来了。

????? 首先,redis中存的是普通kv,没有考虑使用hash等解结构,那么以为着这个job需要访问7亿多次redis,导致效率低,且出现很多redis的read timeout exception.

我采取的一些办法:

1、使用pool来管理连接,并且适当放长timeout的时间,切记在每次使用完连接后放回池中。

?

2、把不同业务的缓存放到不同的redis实例上,效率有一定增加。

?

3、这个job访问的缓存有个特点,数据量不大,总共才几十兆,所以决定在每个node上使用map来保存,在reduce初始化阶段就读进去,效率有较大提升。

?

4、使用redis的pipeline,一次性将所有缓存拉过来,效率非常好。(注意这里需要你获取缓存值之间没有依赖)

?

此外,我也是用了hadoop的DistributedCache来处理,效果也还过得去,但是我始终对这个方式没好感,最大的体会是不灵活,特别是在有向缓存服务器反设值的时候,此方式无效。

?

热点排行