分布式缓存的使用

    凡客技术部会议的时候,了解到了login站点的redis使用。下面我先来介绍一下他们login站点的redis的使用情况。 redis主要缓存用户的sessionID(我们对用户的sessionid有自己的一套实现)。存储内容:KEY就是userid,value就是sessionid。

    N台redis服务器,缓存的内容完全一样。(什么意思呢?就是说,每次往redis里面插入一个新数据,要插N次。)

    那这样的存储意味着,取的时候就变成了,从第一个redis服务器开始取,没有取到接着取第二台,直到取到了为止。如果所有的redis中都没有该份数据,那么就从DB从获取出来,同时向所有的redis中插入这条数据。

  这种处理方式虽然偷懒,但是在业务飞速发展,讲究快速的上线的时代,却是最可行的方案。

不过,对于以后网站的扩张,用户数增大,甚至对于其他数据量大(无法在一台机器缓存所有的内容)的业务,这种做法是行不通的。

对于redis的sharding,好像redis的作者有一套方案:

http://antirez.com/post/redis-presharding.html 

也就是说,如果当前有N台redis服务器,通过hash(key)%N得到这个key会缓存到哪个服务器。

MS主站就是这么做的。(好像维护了一个服务器列表,如果宕机或者新增服务器,会对这个列表删除或者增加)

不过这样也会有一个问题,就是如果有一台服务器宕机或者新增redis服务器,会导致很多的缓存失效。

如何最小化这种变化?

一致性hash算法 (http://blog.csdn.net/sparkliang/article/details/5279393)

        MS一致性HASH算法是现在比较主流的处理方式。(以上就是我思考这个问题的思路,继续研究ing)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值