我在laravel中集成了redis缓存驱动程序。我的应用是社交和音乐。因此,经过身份验证的用户可以访问该应用程序,我必须根据已登录的用户缓存数据。我该如何实施?有人可以帮忙吗?
这是我现在正在使用的代码。以下是根据用户ID提取已登录用户的帖子的代码。在下面的代码中,我正在创建一个缓存标签tfeedsposts
,如果尚未设置缓存,它将设置发布数据。
最佳做法是为每个登录用户使用相同的缓存标签吗?
因为我认为同一个标签对每个登录用户都不起作用,因为该用户将拥有不同的数据,因此将数据存储在同一个缓存标签中不会向用户显示实际数据。
如果有实现此目标的有效方法,请告诉我。
$cachename = 'tfeeds-offset:'.$this->offset.'-limit:'.$this->limit;
$cached = Cache::tags(['tfeedsposts'])->has($cachename);
if ($cached) {
$posts = Cache::tags(['tfeedsposts'])->get($cachename);
} else {
$posts = Post::whereRaw("visibility_id = 1 and user_id IN($friendsids_string) or visibility_id = 2 and user_id IN($follwingids_string) or visibility_id = 3 and user_id IN($follwingids_string) or visibility_id = 3 and user_id IN($friendsids_string)")->orWhere('user_id', $id)->with(['users_liked','users_viewed','shares', 'user','parentpost', 'comments','comments.user', 'comments.comments_liked', 'comments.replies', 'comments.replies.user', 'comments.replies.comments_liked','users_tagged' , 'notifications_user'])->latest()->paginate(Setting::get('items_page'));
Cache::tags(['tfeedsposts'])->put($cachename, $posts, $this->cachettl);
}