不同语言的memcache客户端是否以相同的方式散列?

时间:2009-05-21 22:27:04

标签: java php memcached

我们希望在Java应用程序中进行一些处理,将结果存储在我们的memcache服务器池中,并使用PHP中的memcache将其读回。

这很容易尝试,但我会问,看看是否还有其他人这样做过。

只要Java和PHP客户端都连接到同一个memcache服务器池,两个客户端都会散列到同一服务器位置,从而可以从PHP中进行检索吗?

3 个答案:

答案 0 :(得分:4)

没有。并非所有客户端都以相同方式散列。作为证据,您会看到一些客户提供“一致性散列”,而其他客户则不然。

简而言之,memcached客户可以使用任何哈希算法。没有官方标准。

PHP客户端支持a variety of hashing algorithms - 因此可以将其配置为使用Java库使用的相同算法(看起来有几个 - 你使用哪些?)。但显然你会想要大量测试。

答案 1 :(得分:1)

允许跨语言访问的另一种可能性是不依赖于语言序列化,而是以JSON格式存储对象,如文本字符串。

就个人而言,我使用Gson表示Java,使用json_encode,使用PHP中的json_decode。

答案 2 :(得分:0)

pylibmc

import pylibmc

mc = pylibmc.Client(["127.0.0.1"], binary=True,
                   behaviors={"tcp_nodelay": True,
                               "ketama": True})

key="someKey"
i=0
while True:
    #mc.set(key, str(i))
    value = mc.get(key)
    print(value)
    sleep(1)
    i+=1