我正在使用Phalcon Redis后端来存储一些数据。我后来尝试用嵌入到nginx中的Lua语言访问这些数据。令我发疯的是,Phalcon为Redis键添加了一些垃圾前缀,并为值添加了一些可怕的前缀。所以,如果我将这一对存储在Redis中 - (abc,querty) - 这就是真正存储的内容:
(_PHCRabc, s:6:"querty")
是否可以禁用所有这些垃圾并继续使用Phalcon Redis后端?
答案 0 :(得分: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
);
});
答案 1 :(得分:0)
您可以像这样覆盖redis适配器。
If you want to alter the number of threads spawned, you can set the environmental variable RAYON_NUM_THREADS to the desired number of threads or use the ThreadPoolBuilder::build_global function method.