簡單的談幾個經常抱團出現的傢伙,Redis/Memcache/MongoDb
阿新 • • 發佈:2019-02-02
NoSQL
他們都是Nosql( Not Only SQL ),意即”不僅僅是SQL”。相對於關係型資料庫,聽起來就很酷!
概念就略去不說了,相對於傳統的具有ACID特性的關係型資料庫,Nosql有自身的優勢和缺點
資料儲存
- MongoDB的儲存格式是文件型別,是一種型別json的格式,這樣有機會對某些欄位建立索引,可以簡單的模仿一下關係型資料庫,而且MongoDB確實也有db,table的概念
- Memcache的儲存格式是Key-Value模式,但是很遺憾的是,Value的格式只能是字串,這也限制了Memcache的應用範圍
- Redis的儲存格式和Memcache一樣,也是Key-Value模式,但是Redis有另外的實現,除了基本的string型別,redis還實現了hash,list,set,zset資料型別
安全驗證
- Redis有許可權驗證,不過是全域性的,一號在手,天下我有
- Mongo的許可權驗證類似RBAC,給不同的庫建立了不同的賬號,並分配賬號許可權
- Memcache沒有自己的許可權驗證,只能通過防火牆等手段限制
資料有效期
- Redis可以給key新增過期時間,這裡需要注意的是,這個過期時間是針對頂級key的,意味著你不能給list裡面某個單獨元素或者hash裡面的單獨欄位設定時間
- Memcache也是可以設定過期時間的,這裡推薦使用時間戳來設定,避免30天的那個界限。
- MongoDB本身其實可以看作是一個數據倉庫了,不存在過去時間這一說
資料持久化
- Redis本身支援兩種持久化,快照和AOF追加方式
- Mem很遺憾,並沒有持久化功能,斷電就GG
- MongoDB,你就當他是資料庫吧!
特色功能
- Redis沒發現
- Memcache多用於分散式快取,通過addserver的方式,將不同的鍵儲存到不同的伺服器上面,一臺GG也不影響其他的伺服器,當然這裡面也就存在一個問題,各個伺服器的資料不同步
- MongoDB有很典型的主從複製,現在官方主推副本集