memcached和一致性hash算法

1 一致性hash算法的一致性

这里的一致性指的是该算法可以保持memcached和数据库中的数据的一致性。

2 什么是一致性hash算法

2.1 为什么需要一致性hash算法

现在有大量的key value的数据需要分散的存储到不同的机器上的memcached中,如何根据key来分派机器。

简单的方法直接对机器数目取模,比如有3台机器,首先对key求hash,假如hash分别是1,2,3,4,5,6,7,8,那么

3,6    分派到第一台机器

1,4,7分派到第二台机器

2,5,8分派到第三台机器

但是,假如加了一台机器,4台机器,那么就要对4取模了,

4,8分派到第一台机器

1,5分派到第二台机器

2,6分派到第三台机器

3,7分派到第四台机器

这样,3本来是第三台机器,现在分到了第4台机器,那么原来的数据就失效了,第四台机器的数据需要去数据库中重新取。4、5、6、7、8同理。

这样导致的问题就是原来的memcached缓存的数据大量失效,需要重新获取,成本很高。

2.2 一致性hash算法怎么做

对机器根据ip也计算hash值,比如机器1是3,机器2是5,机器3是9。

现在分派策略变成了,如果key的hash值大于9,就分派给机器1,如果大于3就分派给机器2,如果大于5就分派给机器3。

如果新加一台机器4,hash值是8,那么如果key大于5分派给机器4,大于8给机器3,其它的都不变。

这样只是机器3上的memcached需要更新部分数据,其它原来的机器上的memcached和数据库中保持一致。

2 memcached

它是一个分布式的缓存,它通过客户端实现了分布式缓存,根据key将数据缓存到不同的机器上。

客户端可以使用xmemcached、spymemcached等

boolean set(final String key, final int exp, final Object value);

可见,任何对象都可以存放在memcached中。

 

转载于:https://www.cnblogs.com/hustdc/p/8909802.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值