可以說我有一個系統,我有3個模型製造商,車輛和品牌。Laravel緩存用戶相關緩存
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();
我也不要緩存此查詢,我認爲它的罰款,我不需要在多速率管理員區域。
用戶區:
但在用戶方面,我使用更簡單的查詢,因爲我已經閱讀了簡單的查詢是更好,因爲它們可以被緩存。因此,我使用一個查詢來獲取車輛的製造商,並使用另一個查詢來獲得車輛的品牌。然後我準備一個數組發送到視圖。這裏是一個示例查詢
Manufacturer::where('vehicle_id', $vehicleID)->where('is_active', 1)->get($columns);
每個用戶將有不同的車輛。可以說用戶A有10輛車和用戶B有20輛車。
所以我的問題是我如何緩存用戶特定的查詢,不斷變化?
其次有沒有任何可靠的但自動化的方式來做到這一點,而不是改變代碼,像memcache或類似的東西?
我也聽說過Redis緩存,我認爲它抓取所有的數據從MySQL,然後存儲在Redis和下次它只是從Redis而不是MySQL獲取它。這是否更好?我可以做到這一點,而不需要改變很多代碼?
注意:還有一點需要記住的是,該系統必須是可自動擴展的,即用於aws beanstalk或類似的應用程序,因此數據庫應該同步。不知道同步如何工作。
一如既往,任何幫助表示讚賞。
您是否試圖緩存結果。 Cache :: put('user')。$ userID,$ result,env('CACHE_TIME')); –
不,我沒有,因爲我不知道我應該使用哪個緩存系統。其次,數據在不斷變化。假設有人在接下來的30秒內購買一輛車,你如何處理這樣的事情? –
我會爲你做一個答案。 –