gpt4 book ai didi

mysql - Laravel Caching 用户相关的缓存

转载 作者:行者123 更新时间:2023-11-29 06:17:44 25 4
gpt4 key购买 nike

假设我有一个系统,其中有 3 个模型制造商、车辆和品牌。

Vehicles -> One to one -> brand / manufacturer
Manufacturer -> One to many -> brand / vehicles
Brand -> One to many -> Vehicles
Brand -> One to One -> Manufacturer

系统有一个管理面板和一个用户面板。

管理面板:

在管理面板中我通常做这样的事情

Vehicle::with('manufacturer', 'brand')->get();

我也没有缓存此查询,我认为它很好,因为我不需要在管理区域中提高速度。

用户区:

但是在用户区域,我使用更简单的查询,因为我读到更简单的查询更好,因为它们可以被缓存。因此,我使用一个查询来获取车辆制造商,并使用另一个查询来获取车辆品牌。然后我只准备一个数组发送到 View 。这是一个示例查询

Manufacturer::where('vehicle_id', $vehicleID)->where('is_active', 1)->get($columns);

每个用户都会有不同的车辆。假设用户 A 有 10 辆车,用户 B 有 20 辆车。

所以我的问题是如何缓存不断变化的用户特定查询?

其次,是否有任何可靠但自动化的方法来执行此操作而不是更改代码,例如 memcache 或类似的方法?

我也听说过 redis 缓存,我认为它从 mysql 中获取所有数据,然后存储在 redis 中,下次它只是从 redis 中获取数据而不是从 mysql 中获取。这是否更好?我可以在不更改太多代码的情况下做到这一点吗?

注意:还有一件事要记住,这个系统必须是自动可扩展的,即在 aws beanstalk 或类似的东西上使用,所以数据库应该同步。还不知道同步是如何工作的。

一如既往,我们将不胜感激。

最佳答案

代码示例。

$result = {your result} 

if (!Cache::has('user' . $userID) || env('CACHE_TIME') < 0) {
Cache::put('user' . $userID, $result, env('CACHE_TIME'));
} else {
$result = Cache::get('user' . $userID);
}

.env 文件

CACHE_TIME = 240 // cache time minutes, you can disable cache with -1
CACHE_DRIVER=file

用户购买车辆后

Cache::forget('user' . $userID);

注意:您可以更改缓存方法。更多信息,请访问 https://laravel.com/docs/5.1/cache

关于mysql - Laravel Caching 用户相关的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34893948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com