2009-05-21 19 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 
相關問題