Python脚本可以从内存缓存中检索值,但是PHP脚本会得到空结果

问题描述

|| 我运行一个python脚本来缓存一些数据
self.cache.set(\'test\',\'my sample data\',300)
data = self.cache.get(\'test\')
self.p(data)
该程序将导致打印出“我的示例数据” ...一切都很好,但是当我尝试从PHP访问此键时
$data = $this->cache->get(\'test\');
print_r($test);
我只会得到空结果 所以我检查服务器统计信息
$list = array();
$allSlabs = $this->cache->getExtendedStats(\'slabs\');
$items = $this->cache->getExtendedStats(\'items\');
foreach($allSlabs as $server => $slabs) {
    foreach($slabs AS $slabId => $slabMeta) {
        $cdump = $this->cache->getExtendedStats(\'cachedump\',(int)$slabId);
            foreach($cdump AS $server => $entries) {
                if($entries) {
                foreach($entries AS $eName => $eData) {
                    $list[$eName] = array(
                        \'key\' => $eName,\'server\' => $server,\'slabId\' => $slabId,\'detail\' => $eData,\'age\' => $items[$server][\'items\'][$slabId][\'age\'],);
                }
                }
            }
        }
    }
ksort($list);
print_r($list);
而且这个键“测试”在那里...但是我无法访问它 如果我在PHP中缓存某些内容,每次都会得到结果,但是以某种方式,此python + PHP缓存将无法工作 如果有人知道哪里可能有问题,请多多指教...我会尽一切努力     

解决方法

        难道哈希值在PHP和Python之间不匹配?一种解决方案在这里:http://www.ruturaj.net/python-php-memcache-hash 将以下内容添加到您的Python脚本中以更改哈希的计算方式...
import memcache
import binascii
m = memcache.Client([\'192.168.28.7:11211\',\'192.168.28.8:11211
\',\'192.168.28.9:11211\'])

def php_hash(key):
    return (binascii.crc32(key) >> 16) & 0x7fff

for i in range(30):
       key = \'key\' + str(i)
       a = m.get((php_hash(key),key))
       print i,a