1. 除了常見的redis/memcache等進程外緩存服務,緩存還有一種常見的玩法,進程內緩存,將一些數據緩存在站點,或者服務的進程內,這就是進程內緩存。redis
2. 進程內緩存的實現載體,最簡單的,能夠是一個帶鎖的Map。又或者,能夠使用第三方庫,例如leveldb數據庫
3.與進程外緩存相比(例如redis/memcache),數據讀取再也不須要訪問後端,例如數據庫,省去了網絡開銷,因此一來節省了內網帶寬,二來響應時延會更低後端
4.一樣是多節點統一存儲,容易帶來數據不一致的問題緩存
總結:網絡
狀況一,只讀數據,能夠考慮在進程啓動時加載到內存。併發
畫外音:此時也能夠把數據加載到redis / memcache,進程外緩存服務也能解決這類問題。高併發
狀況二,極其高併發的,若是透傳後端壓力極大的場景,能夠考慮使用進程內緩存。進程
例如,秒殺業務,併發量極高,須要站點層擋住流量,能夠使用內存緩存。內存
狀況三,必定程度上容許數據不一致業務。秒殺
例如,有一些計數場景,運營場景,頁面對數據一致性要求較低,能夠考慮使用進程內頁面緩存。
末了,再次強調,進程內緩存的適用場景並不如redis/memcache普遍,不要爲了炫技而使用。
更多的時候,仍是老老實實使用redis/mc吧。