1. 程式人生 > >簡單的談幾個經常抱團出現的傢伙,Redis/Memcache/MongoDb

簡單的談幾個經常抱團出現的傢伙,Redis/Memcache/MongoDb

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有很典型的主從複製,現在官方主推副本集