為什麼要用redis來做快取呢?redis是key-value的形式,map也是,可以用Map替代redis嗎? 如果不能替代,有什麼場景或需求是只有redis能實現的呢?
认证0级讲师
快取分為本地快取和分散式快取。以java為例,使用自帶的map或guava實現的是本地緩存,最主要的特點是輕量以及快速,生命週期隨著jvm的銷毀而結束,並且在多實例的情況下,每個實例都需要各自保存一份緩存,緩存不具一致性。
使用redis或memcached之類的稱為分散式緩存,在多實例的情況下,各實例共用一份緩存數據,緩存具有一致性。缺點是需要維持redis或memcached服務的高可用,整個程式架構上較為複雜。
Redis 可以用幾十 G 記憶體來做緩存,Map 不行,一般 JVM 也就分幾個 G 資料就夠大了
Redis 的快取可以持久化,Map 是記憶體對象,程式一重啟資料就沒了
Redis 可以實現分散式的緩存,Map 只能存在創建它的程式裡
Redis 可以處理每秒百萬級的並發,是專業的快取服務,Map 只是一個普通的物件
Redis 快取有過期機制,Map 本身無此功能
Redis 有豐富的 API,Map 就簡單太多了
1,redis 資料可持久化保存,有些快取你想重啟程式後還能繼續使用,那麼map實作不了2,redis 可以實現分散式部署,只要涉及到多台多進程啥的,map實現不了3,redis 有許多資料結構,方便操作,例如hash set list sort-set等,在某些場景下操作起來比map方便
1.如果你的快取要載入很多內容,你啟動的時候需要很久;2.JVM 記憶體太大容易掛掉的;3.redis 是C 寫的,穩定性和效能更好;4.目前的redis 已經支援群集模式、持久化等更多特性;5.redis 的api 已經很簡單了,朗朗上手;
redis可以獨立部署,這樣網站代碼更新後redis緩存的數據還在,本地內存每次網站更新都會釋放掉數據存到redis,多個項目間可以共享緩存數據,如果是本地內存是無法跨項目共享的
本地快取不方面查看及修改 redis有豐富工具管理快取資料
快取分為本地快取和分散式快取。以java為例,使用自帶的map或guava實現的是本地緩存,最主要的特點是輕量以及快速,生命週期隨著jvm的銷毀而結束,並且在多實例的情況下,每個實例都需要各自保存一份緩存,緩存不具一致性。
使用redis或memcached之類的稱為分散式緩存,在多實例的情況下,各實例共用一份緩存數據,緩存具有一致性。缺點是需要維持redis或memcached服務的高可用,整個程式架構上較為複雜。
Redis 可以用幾十 G 記憶體來做緩存,Map 不行,一般 JVM 也就分幾個 G 資料就夠大了
Redis 的快取可以持久化,Map 是記憶體對象,程式一重啟資料就沒了
Redis 可以實現分散式的緩存,Map 只能存在創建它的程式裡
Redis 可以處理每秒百萬級的並發,是專業的快取服務,Map 只是一個普通的物件
Redis 快取有過期機制,Map 本身無此功能
Redis 有豐富的 API,Map 就簡單太多了
1,redis 資料可持久化保存,有些快取你想重啟程式後還能繼續使用,那麼map實作不了
2,redis 可以實現分散式部署,只要涉及到多台多進程啥的,map實現不了
3,redis 有許多資料結構,方便操作,例如hash set list sort-set等,在某些場景下操作起來比map方便
1.如果你的快取要載入很多內容,你啟動的時候需要很久;
2.JVM 記憶體太大容易掛掉的;
3.redis 是C 寫的,穩定性和效能更好;
4.目前的redis 已經支援群集模式、持久化等更多特性;
5.redis 的api 已經很簡單了,朗朗上手;
redis可以獨立部署,這樣網站代碼更新後redis緩存的數據還在,本地內存每次網站更新都會釋放掉
數據存到redis,多個項目間可以共享緩存數據,如果是本地內存是無法跨項目共享的
本地快取不方面查看及修改 redis有豐富工具管理快取資料