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 中复杂对象的实例通常不是一个好主意。
当数据库更新时,用 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 中复杂对象的实例通常不是一个好主意。