如何基于用户特定的会话创建laravel缓存外观

时间:2019-07-15 12:43:44

标签: laravel redis

我在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);
                }

0 个答案:

没有答案