時(shí)間:2016-03-18 15:30~16:30
地點(diǎn):新大樓 A區(qū) 504
常見(jiàn)緩存選型
本地緩存
優(yōu)點(diǎn):
- 速度快,無(wú)網(wǎng)絡(luò)損耗
- 單點(diǎn)故障不影響全局(相對(duì)應(yīng)的缺點(diǎn)就是無(wú)法及時(shí)同步)
- 原生代碼奈揍,使用簡(jiǎn)單
缺點(diǎn):
- 無(wú)法及時(shí)同步
- 容量受限制較大(主要看內(nèi)存多大)
適用場(chǎng)景:
- 數(shù)據(jù)量小(500M以內(nèi))
- 更新頻率小或基本不更新
- 各服務(wù)器間不需要很強(qiáng)的一致性
- 訪問(wèn)頻率高的情況
某部門的做法:
先放本地緩存,有效時(shí)間設(shè)置10S或者更短,再放Redis
讀數(shù)據(jù)的時(shí)候也是先從本地緩存中g(shù)et數(shù)據(jù)豆混,讀不到的再去Redis取數(shù)據(jù)予跌,這樣可以每隔10s才訪問(wèn)一次Redis,避免大并發(fā)下Redis的卡死
PS:一般沒(méi)有太高時(shí)效性要求的都可以采用本地緩存+Redis的緩存方案
拓展閱讀:
CacheManager:–個(gè)通用緩存接口抽象類庫(kù)
Redis
優(yōu)點(diǎn):
- 讀寫速度快
- 支持簡(jiǎn)單的主從仰猖,集群模式询吴,能夠滿足高可用需要
- 命令簡(jiǎn)單,易上手
缺點(diǎn):
- 大量占用內(nèi)存亮元,資源消耗大
- 單線程運(yùn)行猛计,會(huì)由于不當(dāng)操作,堵塞整個(gè)緩存
因?yàn)镽edis的單線程爆捞,所以Redis不會(huì)掛奉瘤,只會(huì)卡,也只會(huì)用一個(gè)核煮甥,要么斷網(wǎng)重連盗温,一般無(wú)法解決Redis的卡死問(wèn)題。 - 高可用模型較簡(jiǎn)單成肘,無(wú)法滿足極高要求下的可用性
Memcached是多線程的卖局。之所以選擇Redis是因?yàn)镽edis支持的數(shù)據(jù)類型比較多。
Redis設(shè)置了超時(shí)時(shí)間双霍,過(guò)了超時(shí)時(shí)間數(shù)據(jù)就不存在了砚偶;沒(méi)有設(shè)置超時(shí)時(shí)間的話,數(shù)據(jù)會(huì)永久存在的洒闸。能get到的數(shù)據(jù)就是命中染坯,不能get到的數(shù)據(jù)就是丟失,不管要get的數(shù)據(jù)是否曾經(jīng)在Redis上存儲(chǔ)過(guò)丘逸。
適用場(chǎng)景:
- 訪問(wèn)頻率高
- 更新頻繁
- 數(shù)據(jù)不重要或有備份
- 分布式場(chǎng)景(生產(chǎn)者/消費(fèi)者单鹿、發(fā)布/訂閱)
- 數(shù)據(jù)量在16G以內(nèi)
Redis的數(shù)據(jù)同步是一件比較危險(xiǎn)的事情(網(wǎng)絡(luò)抖動(dòng)的情況下)
一般不希望Redis做計(jì)算的處理(因?yàn)镽edis的單線程)
擴(kuò)展閱讀:
NoSQL初探之人人都愛(ài)Redis:(4)Redis主從復(fù)制架構(gòu)初步探索
Ardb/ssdb
可以想象成是硬盤上的Redis
優(yōu)點(diǎn):
- 容量大幅提升
- 兼容Redis協(xié)議
- 數(shù)據(jù)持久化至硬盤,不會(huì)丟失
缺點(diǎn):
- 讀寫速度慢(Redis的1/3)I/O是它的瓶頸
- 使用不當(dāng)?shù)那闆r下會(huì)把硬盤塞滿
- 比Redis會(huì)更多的耗用CPU資源
適用場(chǎng)景:
- 數(shù)據(jù)了較大(500G以內(nèi))
- 更新頻繁
Mongodb
優(yōu)點(diǎn):
- 完善的副本集功能深纲,讀寫分離
- 持久化在磁盤仲锄,存儲(chǔ)空間極大,并可擴(kuò)容
- 查詢方式多樣湃鹊,支持復(fù)雜查詢
缺點(diǎn):
- 讀寫速度相對(duì)較慢
- 多實(shí)例下成本較高儒喊,部署復(fù)雜
- 學(xué)習(xí)成本高,不當(dāng)查詢或操作導(dǎo)致服務(wù)堵塞
適用場(chǎng)景:
- 數(shù)據(jù)量大
- 數(shù)據(jù)重要性高
- 不能有中斷服務(wù)
- 數(shù)據(jù)結(jié)構(gòu)復(fù)雜涛舍,查詢方式多變
小結(jié)
性能排行:
本地緩存>Redis>Ardb>Mongodb
穩(wěn)定性排行:
Mongodb>Ardb>Redis>本地緩存
選擇
沒(méi)有完美的緩存解決方案澄惊;具體場(chǎng)景具體選擇;復(fù)雜場(chǎng)景下可以融合解決問(wèn)題
相關(guān)文章:
在使用緩存時(shí)應(yīng)該注意哪些問(wèn)題
十個(gè)常見(jiàn)的緩存使用誤區(qū)及建議
緩存一致性(Cache Coherency)入門
擴(kuò)展閱讀:
Web緩存機(jī)制系列