缓存Symfony自定义模型类方法



我创建了一个方法,该方法接收字符串值,将其与用户记录匹配,并返回匹配的用户记录。

我的代码:

class UsersPeer extends BaseUsersPeer
{
public static function getHashUser($hash)
{
$c = new Criteria();
$c->add(UsersPeer::HASH,$hash);
return UsersPeer::doSelectOne($c);
}
}

缓存这个函数有意义吗?

我的理解是,由于传递给函数的字符串值对于不同的用户来说总是不同的,因此函数每次都应该执行。但是,对于之前已将字符串值传递给检索到的方法和记录的用户,它不应再次执行。只有在这种情况下,函数缓存才能工作。

考虑到大约有5万用户,为这种方法启用缓存有意义吗?

这是一个非常简单的查询,即使哈希列没有索引,它也应该很快(如果有索引,则非常快)-我认为没有理由缓存结果。

结果缓存通常用于查询复杂、包含聚合数据或子查询的情况。即使这样,您也应该首先处理查询,看看是否可以对其进行优化

更新

如果您查看sfCache类(所有具体缓存实现的基础),您会发现存储在缓存中的任何内容都有生存期,这意味着它只存储有限的时间。这意味着缓存的大小是有限的。

缓存的工作方式如下:

  • 您的函数被调用
  • 根据函数名称和参数计算缓存键
  • 询问缓存是否存在给定密钥的存储值
  • 如果是,你拿回来
  • 你计算回报值
  • 将其存储在缓存中,然后返回

是否值得缓存函数的返回值始终取决于性能度量。它是一个长时间运行、计算密集型函数吗?这是性能瓶颈吗?如果您的回答是肯定的,那么启用缓存可能是值得的。

还要记住,每次进行函数缓存都会增加必须维护的代码量(和复杂性)。

相关内容

  • 没有找到相关文章

最新更新