2017-08-02 81 views
1

我正在使用Phalcon Redis後端來存儲一些數據。我後來嘗試以嵌入到nginx中的Lua語言訪問這些數據。讓我瘋狂的是,Phalcon爲Redis鍵添加了一些垃圾前綴,併爲值添加了一些可怕的前綴。所以,如果我保存此一對Redis的 - (ABC,QUERTY) - 這是真正存儲的是:如何禁用Phalcon Redis後端中使用的_PHCR鍵修補程序

(_PHCRabc, s:6:"querty") 

是否有可能禁用所有這些垃圾,並繼續與爾康Redis的後端工作?

回答

2

按照源,不可能有選項來禁用它:https://github.com/phalcon/cphalcon/blob/master/phalcon/cache/backend/redis.zep

public function get(string keyName, int lifetime = null) -> var | null 
    let lastKey = "_PHCR" . prefix . keyName; 

public function save(keyName = null, content = null, lifetime = null, boolean stopBuffer = true) -> boolean 
    lastKey = "_PHCR" . prefixedKey, 

還引述the docs

此適配器採用特殊redis的關鍵「_PHCR」來存儲所有密鑰 由適配器內部使用

我在某處讀到這是爲了能夠刷新Phalcon生成的緩存文件。

你最好的選擇是擴展\Phalcon\Cache\Backend\Redis類並覆蓋save/get方法。並在使用您的班級服務後:

// Cache 
$di->setShared('cache', function() use ($config) { 
    return new MyCustomRedis(
     new \Phalcon\Cache\Frontend\Json(['lifetime' => 172800]), // 2d 
     $config->redis 
    ); 
}); 
+0

謝謝,先生! – Jacobian