首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有保证的memcached锁

有保证的memcached锁
EN

Stack Overflow用户
提问于 2011-07-01 01:12:44
回答 3查看 3.4K关注 0票数 1

所以,我尝试使用memcached和add ()的store实现一个分布式锁,前提是不存在契约(Java和spymemcached,但当然适用于任何语言)。当然,如果一个实例消失了,那么我们就失去了锁,所以我们的想法是添加锁3次(例如MyLock1,MyLock2,MyLock3),这很可能会散列为3个不同的实例。

但是,我已经意识到,如果一个实例沿着散列下降,那么显然会发生变化(使用spymemcached的重分发失败模式),所以很可能当再次尝试添加()锁时,所有3个锁的散列都不会与memcached集群中剩余的2个锁中的任何一个匹配。

So...any使用memcached的分布式锁的其他想法?或者基本上不可能像我所说的那样做一个有保证的锁?

EDIT:好的,在查看spymemcached源代码时,对于重分发模式,它只是转到列表中的下一个活动memcached实例,而不是重新散列任何内容,所以它应该可以正常工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-01 01:54:44

如果您真的想使用memcached来避免在您的环境中引入更多的东西/复杂性,那么可以考虑一个非常小但专门用于锁定的memcached配置。

但是如果你对不依赖memcached的解决方案持开放态度,那么就我个人而言,我会使用zookeeper在java中实现分布式锁。我还会使用Netflix curator utils来简化这一过程。

票数 2
EN

Stack Overflow用户

发布于 2011-07-01 01:49:58

你不能,至少不能可靠地。memcached不保证数据保留--作为缓存,它可能会在任何时候丢弃数据,而不会发出警告。即使memcache实例看起来有可用的空间,它也可能由于slab约束而不得不逐出数据。

如果您需要分布式锁定,则需要寻找其他工具-- memcached不是适合此任务的工具。无论如何,MySQL都有锁:http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html

票数 3
EN

Stack Overflow用户

发布于 2012-01-17 09:45:38

如果你正在使用Java,我推荐使用Hazelcast (1.9+),它支持跨集群的分布式锁,并且很容易创建。

Hazelcast保证,如果持有锁的服务器宕机,锁将被释放。

http://hazelcast.com/docs/1.9.4/manual/single_html/#Lock

同样,Hazelcast公开了与memcached相同的约定,所以如果您需要从JVM访问它,您可以这样做(这个示例演示了任何客户端都可以工作):

Java:

代码语言:javascript
运行
复制
MemcachedClient client = new MemcachedClient(AddrUtil.getAddresses("10.20.17.1:5701 10.20.17.2:5701"));
client.set("key1", 3600, "value1");
System.out.println(client.get("key1"));

PHP:

代码语言:javascript
运行
复制
<?php
    $memcache = new Memcache;
    $memcache->connect('10.20.17.1', 5701) or die ("Could not connect");
    $memcache->set('key1','value1',0,3600);
    $get_result = $memcache->get('key1'); //retrieve your data
    var_dump($get_result); //show it
?>

1.9+文档:http://hazelcast.com/docs/1.9.4/manual/single_html/

希望能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6538520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档