使用多个memcache服务器池

8 投票
1 回答
4771 浏览
提问于 2025-04-16 06:11

我在看文档的时候,有点搞不清楚如果指定了多个服务器,memcache是怎么进行内部负载均衡的。比如:

import memcache
mc.set_servers(['127.0.0.1:11211','127.0.0.1:11212',])
mc.set("some_key", "Some value")
print mc.get("some_key")

设置和获取键“some_key”时,是否总是会连接到同一台服务器?而像“some_key_2”或“some_key_3”这样的其他键,是否会自动在服务器池中分配?如果添加或删除了一台服务器,会发生什么?

同样,关于get_multi的情况:

import memcache
mc.set_servers(['127.0.0.1:11211','127.0.0.1:11212',])
mc.set_multi({42: 'adams', 46 : 'and of me'})
print mc.get_multi([46, 42])

这个操作会自动从正确的服务器设置和获取每个键吗?需要写一个包装类吗?

谢谢。

1 个回答

12

memcached 会根据键的哈希值把键放到不同的服务器上。只要你的服务器设置没有变化,那么某个特定的键总是会被放到同一台服务器上。

撰写回答