2009-05-21 21 views
7

我们希望在Java应用程序中进行一些处理,将结果存储在我们的memcache服务器池中,并使用PHP中的memcache将其读回。不同语言的memcache客户端以相同的方式散列吗?

这很容易尝试,但我虽然会问,看看是否有其他人已经这样做。

只要Java和PHP客户端连接到同一个memcache服务器池,两个客户端都会哈希到相同的服务器位置,从PHP中检索可能吗?

+0

这样做似乎只是一个坏主意,我... – 2009-05-21 22:29:08

+2

+1非常好的问题。馊主意?一点也不。分割语言环境是一种非常常见的情况。 – cletus 2009-05-21 22:34:55

+0

你能详细说一下吗? 从概念上讲,您只是将数据写入到两种不同语言的内存中,这与从两种不同语言写入同一数据库不同。 – 2009-05-21 22:35:48

回答

4

不是所有的客户端都以相同的方式散列。作为这方面的证据,你会看到一些客户提供“一致的哈希”,而另一些则不提供。

总之,memcached客户端可以使用他们所需的任何哈希算法。没有官方标准。

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

1

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

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

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 
相关问题