Phalcon中的model Forcing Cache(模型强制缓存)小坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Phalcon中的model Forcing Cache(模型强制缓存)小坑相关的知识,希望对你有一定的参考价值。

跟着phalcon官方文档走到模型强制缓存时候,老发生一个错误 : Cache didn‘t return a valid resultset .

原话的意思是,缓存没有返回一个 有效的结果集。

modelsCache如下:

/**
* @return Redis
*/
public function getModelCache()
{
$frontend = new Json([
"lifetime" => $this->config->Model->lifetime,
]);

return new Redis($frontend, [
"host" => $this->config->Model->host,
"port" => $this->config->Model->port,
"persistent" => false,
"statsKey" => $this->keysListName,
"index" => $this->config->Model->database,
]);
}
看了下github上的源代码:

let cache = this->_dependencyInjector->getShared(cacheService);
if typeof cache != "object" {
                  throw new Exception("Cache service must be an object");
}

let result = cache->get(key, lifetime);
if result !== null {

               if typeof result != "object" {
                                  throw new Exception("Cache didn‘t return a valid resultset");
              }

result->setIsFresh(false);

......

当缓存返回的结果不为对象时,就会抛出此异常,值得注意的是使用json,base64等加密类处理之后返回的数据已经丢失原本的类信息。因此会出错。因此可以用自带的Data类,来加解密数据。Data类使用的加解密是php的serialize和unserialize.不会丢失原数据信息。

以上是关于Phalcon中的model Forcing Cache(模型强制缓存)小坑的主要内容,如果未能解决你的问题,请参考以下文章

phalcon: 按年分表的model怎么建?table2017,table2018...相同名的分表模型怎么建

phalcon:官方多模块支models层,mode数据库配置

致命错误:未捕获的异常“Phalcon\Mvc\Model\Exception”与消息“语法错误,意外令牌>,

phalcon:model 事件与事件管理器

phalcon: model 验证数据完整性

从 Phalcon 查询生成器获取原始 sql