Redis是一個功能強大、性能高效的開源數據結構服務器,Redis最典型的應用是NoSQL。但事實上Redis除了做爲NoSQL數據庫使用以外,還能普遍應用消息隊列,數據堆棧以及數據緩存等衆多場合。Redis與Memcached相相似,都是以鍵值對(key-value)存放數據的,可是Redis支持的數據類型及特性遠比Memcached豐富。數據庫
在緩存應用方面,Redis一樣也是一個內存數據庫,擁有Memcached的快速、穩定等特性,而且支持數據快照功能,開發人員能夠經過配置文件制定數據快照時間間隔,Redis會將數據快照自動存放於硬盤中,這樣就算服務器忽然中止服務,Redis也極少會出現丟失數據的現象。因此近些年來愈來愈多的大型物聯網公司開始使用Rdeis做爲緩存服務器。緩存
相比於MongoDB,Redis是更加完全的Key-Value存儲系統,它沒有專門的查詢語言,也沒有明確的數據類型。一個字符串,能夠代替全部的儲存類型,例如直接使用string類型存放傳統文本、代碼、序列等;也能夠直接存放數據流,例如圖片、視頻等,而且沒有數據大小的限制。雖然沒有數據類型的限制,單位了方便數據管理,Redis提供了多種數據結構類型,分別爲string(字符串)、list(列表)、sets(集合)或者是ordered sets(有序集合)。全部的數據類型都支持push/pop、add/remove、服務端並集、交集、sets集合差異等操做,這些操做都具備原子性的,Redis還支持各類不一樣的排序功能。安全
與Memcached同樣,Redis的儲存方式給予內存的,全部的數據讀寫都在內存中完成。單Memcache使用的libevent庫,而Redis則原生使用epoll異步通訊模型,因此在性能上比Memcache更加優秀。同時,Redis還提供了Virtual Memory功能,使得數據可以在指定間隔時間內保存到硬盤(由後臺自動完成),避免數據在內存中丟失。服務器
與MongoDB相比,Redis主要優勢分別以下:數據結構
☞ Redis數據儲存在內存中完成,因此在數度上比較有優點,MongoDB使用memory-mapped處理方式本質上仍是磁盤操做app
☞ Redis與MongoDB在設計之初均考慮到分佈式處理能力,因此這二者都提供了集羣部署配置接口,但相對而言Redis及所有輸更加容積及穩定。異步
☞ Redis提供了簡單的事務支持,MongoDB不支持事務。分佈式
Redis並不是只有優勢,也有缺點,這些缺點是明顯的,分別以下:性能
☞ Redis沒有字段的概念,因此在數據查詢上功能比較弱,支持的特性比較簡單。spa
☞ Redis單個value的最大容量可達1GB,雖然MongoDB單個文檔最大容量爲16MB,但MongoDB提供了GridFS用於實現超大文件存儲。
☞ 因爲Redis本質上是一個內存書庫,因此內存硬件的容量大小直接決定了Redis可用的數據庫空間(Redis2.0新增了Virtual Memory功能解決了容量問題,但虛擬內存本質上就是磁盤)。
☞ Redis雖然在內存中查詢數據,但爲了確保數據的安全,Redis默認狀況下使用子線程對數據進行持久化處理,若是配置不當(默認刷新間隔爲20秒),將會是系統運行效率拔苗助長。
☞ MongoDB提供了mapreduce數據分析功能,Redis則沒有數據分析功能。