Yii2 内存缓存与 dataProvider

Yii2 memcache with dataProvider

当数据库更新时,用 dataProvider 构造和更新我的 key/value 的正确方法是什么?首先,我从数据库中查找所有新闻。我应该如何添加或更新 key/value 对的值?我总是遇到问题,但从来没有遇到过查询问题。红了很多资料但是没找到合适的方法

$mem = new \Memcached();
$mem->addServer("localhost", 11211);
$result = $mem->get('categoriesProvider');

if(!$result){
    $whereString = " active = 1 ";
    $categoriesProvider = new ActiveDataProvider([
         'query' => News::find()->where($whereString),
         'pagination' => [
         'pageSize' => 6,
         'route' => Yii::$app->getRequest()->getQueryParam('first_step'),
                ],
         ]);
 $mem->set("categoriesProvider", $categoriesProvider);
 }
 $result = $mem->get("categoriesProvider");

这是我的观点:

echo ListView::widget([
     'dataProvider' => $result,
     'itemView' => '_blogCategories',
     'layout' => '{items}<ulclass="pagination theme-colored">{pager}</ul>',
     'pager' => [
     'maxButtonCount' => 3,
     'options' => ['class' => 'pagination flRight'],
      ],

]);

作为 memcached 和 yii2 用户我自己可以建议你将缓存放在数据和提供者之间,最简单的方法是查询你需要的数据然后以最轻量级的形式缓存结果(作为项目的数组,其中项目本身就是数组),然后使用它来显示您的数据或传递给可以显示您的数据的提供程序。

Memcached 的 YII2 接口允许您利用新方法 getOrSet(),您可以在其中使用回调生成要缓存的数据(如果数据不存在),从而减轻您自己制作此类流程的负担.

在缓存中存储 YII2 中复杂对象的实例通常不是一个好主意。