John Davidson

php - how to update specific record in cache in Laravel?

0 comments
Message:


I am working on a project but I am not quite sure how to update a single record stored in the cache, for example:


PostController.php


class PostController extends Controller
public function index(){
$page = request('page', 1);
$posts = Cache::rememberForever('posts_page_'.$page, function(){
return Posts::query()
->with('category')
->latest()
->paginate(30);

});
}
...
...
}

Here is the store method:


public function store(PostCreateRequest $request)
{
$post = Post::create([
'title' => $request->title,
'body' => $request->body,
...
...
'category_id' => $request->category_id
]);

....
....

Cache::flush();

return redirect()->route('posts.index')
->with('success', 'post created');



}

I need to do Cache::flush(); to clean all the posts cache, because I have this keys in the cache: posts_page_1, posts_page_2, posts_page_3, etc, category_name1_page_1, category_name1_page_2, category_name2_page_1, etc..


But I am adding only one post, the same occurs when I update only one post, I have to clean up all the cache, what would happen if I had thousands or millions records? that Cache::flush() would take to much time, I would like to know how to add or update one specific record in the cache, I am using currently the file driver for caching. Thanks.



My Answer:
> To update a specific record in the cache in Laravel, you can use the `put` method provided by the Cache facade. Here's an example of how you can update a specific record in the cache:

php
public function updateCache($postId) {
$post = Post::find($postId);

if ($post) {
Cache::put('post_' . $postId, $post, now()->addMinutes(60));
return response()->json(['message' => 'Record updated in cache']);
} else {
return response()->json(['message' => 'Record not found'], 404);
}
}


In this example, the `updateCache` method takes the `$postId` as a parameter and retrieves the post record from the database using the `find` method. If the post record is found, it updates the cache with the new post data using the `put` method. You can customize the cache expiration time by using the `addMinutes` method.

You can call this `updateCache` method whenever you need to update a specific record in the cache.

Rate this post

3 of 5 based on 6779 votes

Comments




© 2024 Hayatsk.info - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us