如何禁用Phalcon Redis后端

时间:2017-08-02 12:56:16

标签: php redis phalcon

我正在使用Phalcon Redis后端来存储一些数据。我后来尝试用嵌入到nginx中的Lua语言访问这些数据。令我发疯的是,Phalcon为Redis键添加了一些垃圾前缀,并为值添加了一些可怕的前缀。所以,如果我将这一对存储在Redis中 - (abc,querty) - 这就是真正存储的内容:

(_PHCRabc, s:6:"querty")

是否可以禁用所有这些垃圾并继续使用Phalcon Redis后端?

2 个答案:

答案 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.