获取缓存表中已保存记录的Yii DB缓存id

获取缓存表中已保存记录的Yii DB缓存id,yii,Yii,我有这样一个问题: $record=books::model()->cache(10000)->find('id=:id',array(":id"=>$id)); Yii使用CDbCache将结果保存在缓存表中 id expire value -- ------ ------ 我的问题是: 如何获取缓存记录的id-此id由yii-in生成 yii缓存表 没有公共的方法来获取缓存ID,因为它包含了很多变量,如果你真的想的话,你可以这样做,

我有这样一个问题:

$record=books::model()->cache(10000)->find('id=:id',array(":id"=>$id));
Yii使用CDbCache将结果保存在缓存表中

id     expire      value 
--     ------      ------
我的问题是:

如何获取缓存记录的id-此id由yii-in生成 yii缓存表


没有公共的方法来获取缓存ID,因为它包含了很多变量,如果你真的想的话,你可以这样做,但是在Yii的深处它真的很暗

根据评论回答:

您可以在记录上设置最后一次缓存的时间,然后使用该时间计算剩余时间。但这不会在整个页面范围内持续存在,因为缓存会产生结果,并且不会被再次读取。因此,您的选择是:

  • 手动执行缓存,并针对要用于计算的对象存储时间
  • 或者存储会话中提取的每个ID的时间,并使用该时间来计算它

    • 来回答这个问题。通过编写Yii代码的方式,您无法获取Yii在内部生成的缓存的ID/密钥。 如果你看一下源代码

      方法查询内部

      您将认识到,缓存键的生成是一件复杂的事情。此外,MD5将进一步对该缓存密钥进行散列

      参考:

      如果您将“缓存”用作QueryBuilder的一部分,那么我们将通过提供过期期限和依赖项查询,授予Yii管理此缓存的权限

      如果您想控制过期持续时间,并想拥有该ID,那么唯一的方法就是按照用户的建议手动设置CacheID 如下:

      $dbResult = Yii::app()->cache->get('YOUR-KNOWN-KEY');
      if($dbResult === false){
          $dbResult = YOUR-QUERY;
          Yii::app()->cache->set('YOUR-KNOWN-KEY, $dbResult);
      }
      

      谢谢你,但我认为这与我的问题无关。如何在查询中获取缓存表中已保存记录的id。这是我的问题。我想你的意思是找到ID,这样你就可以删除记录,这就是要做的。你为什么需要身份证?Yii如何生成这些ID是有逻辑的,但依赖这些数据是正确的甚至是存在的是非常危险的。我想知道缓存何时过期,并使用剩余时间过期。啊,所以你想知道这个记录缓存上剩余的时间。我会考虑一下如何最好地做到这一点。但与此同时,为什么?它不会给你任何关于数据的有用信息,除了它可能有多过时。我只需要时间。我已经用另一种方式实现了我所需要的。但我认为如果我能用yii函数获得id,这是一个好的、更容易的选择-