不确定我是否正确理解 Memcached - Laravel 应用程序
Not sure I understand Memcached properly - Laravel application
一个简单的数据库 select 查询检索信息(为简单起见,将其称为 page_id)为应用程序上的不同用户构建网页 I建成。我最近学习了 Memcached,发现 this 很有用 post。
假设有 2 个用户(A 和 B,使用不同 machines/browsers)使用我编写的应用程序。假设用户 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 提供了缓存 image/resource。同样在这里,应用程序缓存是否也为用户 B 提供 page_id,或者用户 B 是否获得 page_id从数据库查询?
对于任何特定的缓存键,所有用户都将获得相同的数据。
因此,如果您要存储用户个人资料信息之类的内容,请务必不要使用 profile
之类的缓存键来存储它 - 您希望将其存储为唯一的密钥名称,例如 profile-123
(其中 123 是用户 ID)。
一个简单的数据库 select 查询检索信息(为简单起见,将其称为 page_id)为应用程序上的不同用户构建网页 I建成。我最近学习了 Memcached,发现 this 很有用 post。
假设有 2 个用户(A 和 B,使用不同 machines/browsers)使用我编写的应用程序。假设用户 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 提供了缓存 image/resource。同样在这里,应用程序缓存是否也为用户 B 提供 page_id,或者用户 B 是否获得 page_id从数据库查询?
对于任何特定的缓存键,所有用户都将获得相同的数据。
因此,如果您要存储用户个人资料信息之类的内容,请务必不要使用 profile
之类的缓存键来存储它 - 您希望将其存储为唯一的密钥名称,例如 profile-123
(其中 123 是用户 ID)。