带有dataProvider的Yii2 memcache

时间:2018-01-04 14:19:04

标签: yii2 memcached dataprovider

更新数据库时,使用dataProvider构造和更新键/值的正确方法是什么?首先,我从数据库中找到所有新闻。我应该如何添加或更新我的键/值对的值?我总是拥有并且从不用查询来捕获块。红色很多材料,但没有找到正确的方法。

$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'],
      ],

]);

1 个答案:

答案 0 :(得分:3)

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

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

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

相关问题