為什麼要用redis而不用map做快取?
PHP中文网
PHP中文网 2017-04-28 09:04:05
0
5
1250

為什麼要用redis來做快取呢?
redis是key-value的形式,map也是,可以用Map替代redis嗎?
如果不能替代,有什麼場景或需求是只有redis能實現的呢?

PHP中文网
PHP中文网

认证0级讲师

全部回覆(5)
过去多啦不再A梦

快取分為本地快取和分散式快取。以java為例,使用自帶的map或guava實現的是本地緩存,最主要的特點是輕量以及快速,生命週期隨著jvm的銷毀而結束,並且在多實例的情況下,每個實例都需要各自保存一份緩存,緩存不具一致性。

使用redis或memcached之類的稱為分散式緩存,在多實例的情況下,各實例共用一份緩存數據,緩存具有一致性。缺點是需要維持redis或memcached服務的高可用,整個程式架構上較為複雜。

我想大声告诉你
  1. Redis 可以用幾十 G 記憶體來做緩存,Map 不行,一般 JVM 也就分幾個 G 資料就夠大了

  2. Redis 的快取可以持久化,Map 是記憶體對象,程式一重啟資料就沒了

  3. Redis 可以實現分散式的緩存,Map 只能存在創建它的程式裡

  4. Redis 可以處理每秒百萬級的並發,是專業的快取服務,Map 只是一個普通的物件

  5. Redis 快取有過期機制,Map 本身無此功能

  6. Redis 有豐富的 API,Map 就簡單太多了

phpcn_u1582

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 已經很簡單了,朗朗上手;

Ty80

redis可以獨立部署,這樣網站代碼更新後redis緩存的數據還在,本地內存每次網站更新都會釋放掉
數據存到redis,多個項目間可以共享緩存數據,如果是本地內存是無法跨項目共享的

本地快取不方面查看及修改 redis有豐富工具管理快取資料

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板