https://segmentfault.com/q/1010000009106416java
緩存分爲本地緩存和分佈式緩存。以java爲例,使用自帶的map或者guava實現的是本地緩存,最主要的特色是輕量以及快速,生命週期隨着jvm的銷燬而結束,而且在多實例的狀況下,每一個實例都須要各自保存一份緩存,緩存不具備一致性。redis
使用redis或memcached之類的稱爲分佈式緩存,在多實例的狀況下,各實例共用一份緩存數據,緩存具備一致性。缺點是須要保持redis或memcached服務的高可用,整個程序架構上較爲複雜。segmentfault
項目小而簡單、緩存數據量不大時,能夠應用map或者guava做爲緩存。緩存
分佈式系統中,多個應用實例共享緩存的場景下,則須要採用對分佈式緩存支持較好的redis等。架構
Redis 能夠用幾十 G 內存來作緩存,Map 不行,通常 JVM 也就分幾個 G 數據就夠大了併發
Redis 的緩存能夠持久化,Map 是內存對象,程序一重啓數據就沒了jvm
Redis 能夠實現分佈式的緩存,Map 只能存在建立它的程序裏分佈式
Redis 能夠處理每秒百萬級的併發,是專業的緩存服務,Map 只是一個普通的對象memcached
Redis 緩存有過時機制,Map 自己無此功能spa
Redis 有豐富的 API,Map 就簡單太多了