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


Not sure I understand Memcached properly - Laravel application

一个简单的DB选择查询检索信息(为了简单起见,将其称为page_id),以便在我构建的应用程序上为不同用户构建网页。我最近了解了Memcached,发现这篇文章很有用。

假设两个用户(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是否从DB查询中获得page_id

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

因此,重要的是,如果您存储的是像用户的配置文件信息这样的东西,您不想用profile这样的缓存密钥来存储它,而是要用profile-123这样的唯一密钥名称来存储它(其中123是用户的ID)。