关于Memcache分布式的随心记

版权声明:转发原创文章请复制文章链接地址 https://blog.csdn.net/weixin_42579642/article/details/84376821

现在好多项目的缓存还是用的Memcache,但是由于Memcache官方还没有提供类似于Redis的集群模式,所以我们就要自己做出一个高可用的方案!

1、首先我第一想到的是做个版本控制:

把每个存入Memcache的key键在数据库中建立一个对应版本的表,比如原始的版本定义为V1版本,然后我们加了一台Memcache服务器,把再存的key值标识为V2,每次我们查询Memcache的时候我们先查询一下版本表,这样的好处是做到数据可以一点不丢失,但是有个不好的地方就是我们要加逻辑判断和查询数据库,而且到后期维护的时候也稍微有点麻烦,所以我们就用一下一致性Hash的方法!

2、一致性Hash

如果我们把一个圆的边上画上1000个点,我们每个服务器呢占一个点,比如说有三个服务器,三个服务器分别占100,500,800那么我们用数据%1000如果得到的是90,那我们就储存在100服务器上,如果是200,那我们储存在500服务器上,依次类推;如果我们加服务器占300这个点,那么我们以后储存200这个数据会储存在300服务器上,这种方式的好处就是维护比较方便,操作简单,不用动用数据库,但是会造成一少部分的数据丢失,比如加300这个服务器就可能丢失100到300中间的数据,但是当我们再缓存中命中不了的时候,我们会查询数据库,然后再存入缓存中,所以也是可以接受的!

有不足请大家指出 *_* !!!

猜你喜欢

转载自blog.csdn.net/weixin_42579642/article/details/84376821