我正在尝试构建一个 Java 应用程序,该应用程序将在 Memcached 中设置数据,并有一个 PHP 脚本来稍后在此过程中获取相同的数据。到目前为止,我还没有找到获得 100% 命中率的方法。为了确保 SET 没有任何问题,我手动确认数据已添加到 Memcached。基于PHP 和 Java 中的 Consistent hashing,我尝试使用 KETAMA(见下面的代码)但没有成功。
配置:
- 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);