進程內緩存分析

1. 除了常見的redis/memcache等進程外緩存服務,緩存還有一種常見的玩法,進程內緩存,將一些數據緩存在站點,或者服務的進程內,這就是進程內緩存。redis

2. 進程內緩存的實現載體,最簡單的,能夠是一個帶鎖的Map。又或者,能夠使用第三方庫,例如leveldb數據庫

3.與進程外緩存相比(例如redis/memcache),數據讀取再也不須要訪問後端,例如數據庫,省去了網絡開銷,因此一來節省了內網帶寬,二來響應時延會更低後端

4.一樣是多節點統一存儲,容易帶來數據不一致的問題緩存

  總結:網絡

狀況一,只讀數據,能夠考慮在進程啓動時加載到內存。併發

畫外音:此時也能夠把數據加載到redis / memcache,進程外緩存服務也能解決這類問題。高併發

 

狀況二,極其高併發的,若是透傳後端壓力極大的場景,能夠考慮使用進程內緩存。進程

例如,秒殺業務,併發量極高,須要站點層擋住流量,能夠使用內存緩存。內存

 

狀況三,必定程度上容許數據不一致業務。秒殺

例如,有一些計數場景,運營場景,頁面對數據一致性要求較低,能夠考慮使用進程內頁面緩存。

 

末了,再次強調,進程內緩存的適用場景並不如redis/memcache普遍,不要爲了炫技而使用。

 

更多的時候,仍是老老實實使用redis/mc吧。

相關文章
相關標籤/搜索