2010-07-28 52 views
0

我们正在Django(Python)生产中使用一组memcached服务器进行缓存,尝试将cmemcache和python-memcache都作为API。问题是高并发性,我们开始有重复的键值对,也就是说我们有一个键的多个值。有没有人有类似的情况,杀人是什么?memcached返回的重复键值对

由于memcached服务器本身并未与每个服务器进行通信以维护键值对的单一性,因此此任务留给客户端库,因此我们正试图进一步了解cmemcache和python-memcache的工作原理。

回答

0

这是一个更大的问题:是否有冗余数据,或为查询获得多个结果?

如果前者是问题,那么你有一个讨厌的并发问题需要解决。

但是,如果后者存在问题,为什么不直接给每个在memcache中存储值的主机一个唯一的标识符,并将其添加到任何键?

1

客户端应根据其密钥找出哪个memcache服务器上存在值。如果您使用两个不同的客户端(或同一客户端的两种不同配置),则他们可能使用不同的算法将密钥映射到服务器,从而将相同密钥的值发送到两个不同的服务器。

您可能想切换到pylibmcpython-libmemcached。当我去年查看了python memcache客户端时,您提到的两个客户端都已退休或已损坏,或者两者兼而有之。