天天看點

NoSQL日記——Redis,Mongodb,Memcached差別和使用場景

工作中一旦遇到很多資料,高并發,這時就需要用到NoSQL來幫忙,NoSQL主要用到以下三種:Redis,Mongodb,Memcached。下面的表格介紹了他們之間的差別和使用場景。

對比項 Redis Mongodb Memcached
資料存儲 Redis的存儲格式和Memcache一樣,也是Key-Value模式,但是Redis有另外的實作,除了基本的string類型,redis還實作了hash,list,set,zset資料類型 MongoDB的存儲格式是文檔類型,是一種類型json的格式,這樣有機會對某些字段建立索引,可以簡單的模仿一下關系型資料庫,而且MongoDB确實也有db,table的概念 Memcache的存儲格式是Key-Value模式,但是很遺憾的是,Value的格式隻能是字元串,這也限制了Memcache的應用範圍
安全驗證 Redis有權限驗證,不過是全局的 Mongo的權限驗證類似RBAC,給不同的庫建立了不同的賬号,并配置設定賬号權限 Memcache沒有自己的權限驗證,隻能通過防火牆等手段限制
資料有效期 Redis可以給key添加過期時間 MongoDB本身其實可以看作是一個資料倉庫了,不存在過去時間這一說 Memcache也是可以設定過期時間的,這裡推薦使用時間戳來設定
資料持久化 Redis本身支援兩種持久化,快照和AOF追加方式 MongoDB先持久化journal再持久化data Memcached,并沒有持久化功能,斷電就會丢失資料
特色功能 可執行Lua腳本 分片,索引(使用反向索引),可執行js腳本,單文檔事務(2PC) Slab Allocation機制,申請大塊記憶體,分成各種大小的Chunk,大小相同的組成Slab Class
使用場景 适用于對讀寫效率要求都很高,資料處理業務複雜和對安全性要求較高的系統 資料模型無法确定;QPS要求高;需要能快速水準擴充;弱事務 動态系統中減輕資料庫負載,提升性能;做緩存,适合多讀少寫,大資料量的情況