我試圖構建一個Java應用程序,它將在Memcached中設置數據,並且有一個PHP腳本在稍後的過程中獲取相同的數據。到目前爲止,我還沒有找到一種獲得100%命中率的方法。爲確保SETs沒有問題,我手動確認數據已添加到Memcached。基於Consistent hashing in PHP and Java,我嘗試使用KETAMA(請參閱下面的代碼),但沒有取得任何成功。Java(spymemcached)和PHP(memcached)
配置:
- Spymemcached(2.8.1)
- PHP(5.3.10)
- PECL/memcached的(2.0.1)
- libmemcached(1.0.4)
會是什麼是在Java和PHP之間共享數據的最佳策略?有沒有我沒有正確使用的配置?我應該使用另一個圖書館嗎?
謝謝你的幫助!
MemcachedClient client = new MemcachedClient
(ConnectionFactory) new ConnectionFactoryBuilder()
.setProtocol (Protocol.TEXT)
.setHashAlg (DefaultHashAlgorithm.KETAMA_HASH)
.setFailureMode (FailureMode.Redistribute)
.setLocatorType (Locator.CONSISTENT).build(),
AddrUtil.getAddresses("192.168.0.101:11211 192.168.0.102:11211"));
$memcached = new Memcached();
$memcached->addserver('192.168.0.101', 11211);
$memcached->addserver('192.168.0.102', 11211);
$memcached->setOption(Memcached::OPT_DISTRIBUTION ,Memcached::DISTRIBUTION_CONSISTENT);
$memcached->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
你用的關鍵是什麼? – DarthVader 2012-07-11 20:13:46
對於我的測試,我使用「test_1」來「test_1000」 – Fretre 2012-07-11 20:26:09
,你是說php客戶端和java客戶端返回一個鍵的不同值? – DarthVader 2012-07-11 20:28:43