如何从java访问在php中创建的memcache项 项是json序列化的,而不是二进制的,因此它是可读的 我在尝试获取该项时遇到了问题,使用php时,该键工作正常,但当我在java中使用相同的键访问该项时,它失败了 我只有一台服务器,所以服务器哈希不应该是一个问题 我已经做了wireshark分析,似乎没有任何帮助,除了: java和php客户端的键看起来不同

如何从java访问在php中创建的memcache项 项是json序列化的,而不是二进制的,因此它是可读的 我在尝试获取该项时遇到了问题,使用php时,该键工作正常,但当我在java中使用相同的键访问该项时,它失败了 我只有一台服务器,所以服务器哈希不应该是一个问题 我已经做了wireshark分析,似乎没有任何帮助,除了: java和php客户端的键看起来不同,java,php,memcached,Java,Php,Memcached,我需要做什么来修复它?目前,我已经创建了一个php包装器,工作正常,但对我来说不是长期解决方案,如果有任何帮助,我们将不胜感激。如果wireshark显示客户端正在发送不同的密钥,这难道不能确切地告诉您问题出在哪里吗 在Java中使用与PHP中相同的密钥访问项目,但wireshark通信显示发送了不同的密钥,这怎么可能呢?您如何知道您正在发送相同的密钥?您缺少的Java客户端是否有某种配置?如果wireshark显示客户端正在发送不同的密钥,这难道不能确切地告诉您问题出在哪里吗 在Java中使用

我需要做什么来修复它?目前,我已经创建了一个php包装器,工作正常,但对我来说不是长期解决方案,如果有任何帮助,我们将不胜感激。

如果wireshark显示客户端正在发送不同的密钥,这难道不能确切地告诉您问题出在哪里吗


在Java中使用与PHP中相同的密钥访问项目,但wireshark通信显示发送了不同的密钥,这怎么可能呢?您如何知道您正在发送相同的密钥?您缺少的Java客户端是否有某种配置?

如果wireshark显示客户端正在发送不同的密钥,这难道不能确切地告诉您问题出在哪里吗


在Java中使用与PHP中相同的密钥访问项目,但wireshark通信显示发送了不同的密钥,这怎么可能呢?您如何知道您正在发送相同的密钥?您缺少的Java客户端是否有某种配置?

问题是memcache用于PHP的默认哈希算法与用于Java的哈希算法不同

您可以使用配置选项
memcache.hash_function
设置PHP使用的算法(请参阅-默认值为)

您可以使用
setHashingAlg
方法设置java使用的算法:

static {
                String[] serverlist = { "cache0.server.com:12345", "cache1.server.com:12345" };

                SockIOPool pool = SockIOPool.getInstance();
                pool.setServers(serverlist);
                pool.setHashingAlg( SockIOPool.NEW_COMPAT_HASH );
                pool.initialize();      
        }
将使其也使用crc32

(请参阅-它默认为java的本机
String.hashCode()


如果将它们设置为相同的算法,您的问题应该得到解决

问题是memcache用于PHP的默认哈希算法与用于java的不同

您可以使用配置选项
memcache.hash_function
设置PHP使用的算法(请参阅-默认值为)

您可以使用
setHashingAlg
方法设置java使用的算法:

static {
                String[] serverlist = { "cache0.server.com:12345", "cache1.server.com:12345" };

                SockIOPool pool = SockIOPool.getInstance();
                pool.setServers(serverlist);
                pool.setHashingAlg( SockIOPool.NEW_COMPAT_HASH );
                pool.initialize();      
        }
将使其也使用crc32

(请参阅-它默认为java的本机
String.hashCode()


如果将它们设置为相同的算法,您的问题应该得到解决

您的java和php客户端如何看待不同的键?(他们不应该)你能提供键名的例子吗?你的java和php客户端如何看待不同的键?(他们不应该)你能提供关键名称的例子吗?是的,这就是我问的如何修复它。不管怎样,DanSingerman提出的解决方案是可行的,但存在间歇性故障。不管怎样,非常感谢你在这方面帮助我,这已经解决了我的一大难题,我将向你提供更多关于间歇性故障的信息。是的,这就是我所问的如何修复它。不管怎样,DanSingerman提出的解决方案是可行的,但存在间歇性故障。不管怎样,非常感谢你在这方面帮助我,这已经解决了我的一大难题,我将向你提供更多关于间歇性故障的信息。