目前,緩存主要有兩種技術:分布式緩存和進程級別的內容緩存。兩種緩沖具體的差異就不廢話了。
1.在技術上
數據庫降壓的最好方式就是緩存。在緩存的性能上,進程級別的內存緩存性能有明顯優於分布式緩存,內存緩存性能最好,需多加利用。如果要對他們的使用排序的話,建議是:內存緩存>分布式緩存>數據庫。
2.業界趨勢
“數據要盡可能的貼近用戶端,盡量高的從各類緩存中命中數據,而不是訪問數據庫”,這應該是個共識了。前端盡量通過CDN緩存抗壓,后端要在各層提供各種緩存。按照這種思路,可以總結出緩存的設計原則:
靜態化:數據盡量以目標展現的格式存儲,而不是存儲中間數據。減少數據格式化的時間消耗,用空間換時間。
專用:數據靜態化后,可使用的范圍有限,應盡量貼近用戶的結構,降低使用后的格式化成本。
隔離:封裝緩存數據的訪問,把緩存的控制權掌握在自己手中。
3.緩存的使用原則
- 進程緩存
-
性能最高,優先考慮使用。
-
對數據要求苛刻,變化頻率高、訪問頻率低的數據不能緩存。
-
建議緩存訪問頻率高、變化頻率低的數據。
-
配合緩存的時效性策略應用。
-
- 分布式緩存
- 性能好。在內存緩存不適用的情況下,推薦使用。
- 建議作為緩存使用,而不是存儲。
- 在數據變化頻率很高的情況下,可作為DB的寫入緩存
- 緩存同步模式:盡在進程緩存
- 增量同步:按照時間戳或者數據變化更新緩存
- 全量同步:重新拉取所有的緩存數據。不建議采用此種模式,性能差,同步的數據量大。
- 緩存同步時機
- 每次查詢時同步:在做查詢時,檢驗數據的版本,然后進行緩存同步。
- 增刪改時失效:在做數據的增刪改時,同步修改緩存。此種模式僅適用用分布式緩存,進程級別緩存不適用的。
- 定時同步:在緩存的駐留端定時更新緩存。此種模式適用於對數據的實時性要求不高的場景。
- 緩存時效性
- 有時效性:緩存數據存在時效性,不管數據的版本有沒有變化,過期失效
- 無時效性:只要數據的時間戳保持不變,緩存數據永久有效。
weiliang 2016-10-8