我不确定我是否正确理解了Memcached - Laravel应用程序

时间:2016-04-20 17:54:31

标签: php laravel memcached

一个简单的数据库选择查询检索信息(为简单起见,将其称为 page_id ),以便为我构建的应用程序上的不同用户构建网页。我最近了解了Memcached并找到了this有用的帖子。

假设2个用户(A和B,使用不同的机器/浏览器)使用我编写的应用程序。假设用户A是按时间顺序排列的第一个用户,B是第二个用户。

假设有这样的流程:

$ID = 1000; // $ID retrieves the page_id to build the page

if (Cache::has('page_id')) {

    $pageID = Cache::get('page_id');

} else {

  $sql = DB::table('mytable')->select('page_id')->where('id', $ID)->first();

  $pageID = $sql->page_id;

  Cache::forever('page_id', $pageID);

}

//Now build the page using $pageID

这是问题所在。用户A在第一次访问页面时填充缓存,但如果用户A重新加载或重新访问同一页面,则缓存将提供 page_id 。但是用户B怎么样? (用户B在用户A之后访问同一页面,用户B使用不同的机器和浏览器)现在进行类比,我知道我们的CDN向用户A和B提供缓存的图像/资源。同样,此处,应用程序缓存是否也为用户B提供 page_id ,或者用户B是否从数据库查询中获取 page_id

1 个答案:

答案 0 :(得分:1)

对于任何特定的缓存密钥,所有用户都将获得相同的数据。

出于这个原因,重要的是如果您存储的内容类似于用户的个人资料信息,您不希望使用profile等缓存密钥存储它 - 您希望将其存储为唯一的密钥名称,如profile-123(其中123是用户的ID)。