新闻,博客,商城系统中常见一些模型的阅读数,点击数增加。
这里我们举例用 views_count
字段表示我们要增加的字段
public function show($id)
{
Model::where('id', $id)->increment('views_count', 1);
// 视图渲染
}
Redis
然后定时处理public function show($id)
{
Redis::increment("model_views:{$id}", 1);
// 视图渲染
}
// 定时任务处理
public function handle()
{
$keys = Redis::keys('model_views:*');
foreach ($keys as $key) {
list(, $id) = explode(':', $key);
$count = Redis::get($key);
Model::where('id', $id)->increment('views_count', $count);
Redis::del($key);
}
}
public function show($id)
{
$key = "model_views:{$id}";
$count = Redis::increment($key, 1);
$max = 100;
if ($count > 100) {
Model::where('id', $id)->increment('views_count', $count);
Redis::del($key);
}
// 视图渲染
}
Redis
的计数Model::getAttribute('views_count', function (Model $model) {
return $model->views_count + (int)Redis::get("model_views:{$model->id}");
});