我正在使用Laravel构建一个应用程序,该应用程序正在从数据库中获取大量数据,我想使用Laravel的Caching System
来阻止用户始终访问数据库以获取所需的数据。
对于此示例,让我们使用应用程序的2个用户:User1和User2
当User1和User2同时开始使用该应用程序并在下面的代码中运行方法show
时。此外,该方法获取数据库中的帖子并将其添加到缓存中。
class PostController extends Controller
{
public function store(Request $request) {
$post = Post::find(1);
$post->name = $request['name'];
$post->save();
$post = Cache::put('post', $post, 60);
return view('index', compact('post'));
}
public function show() {
$post = Post::all();
if(Cache::has('post')){
$post = Cache::get('post');
}else{
$post = Cache::put('post', $post, 60);
}
return view('index', compact('post'));
}
}
几分钟后,User1运行上面代码的方法store
,向数据库中添加一个新帖子并更新其缓存。
此时User2仍然具有相同的缓存,他从一开始就一直在使用。
所以我的问题是,有任何方法在User1进行更新时随时更新User2的缓存吗?