您好,登錄后才能下訂單哦!
今天小編就為大家帶來一篇討論redis和mongodb優缺點的文章。小編覺得挺不錯的,為此分享給大家做個參考。一起跟隨小編過來看看吧。
Redis是什么?
Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value非關系型數據庫,并提供多種語言的API。redis是一個key-value存儲系統。Redis是非關系型數據庫的一種,經常用作緩存。
和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。
與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。
Redis有以下的優點:
1.支持多種數據結構,如 string(字符串)、 list(雙向鏈表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基數估算)
2.支持持久化操作,可以進行aof及rdb數據持久化到磁盤,從而進行數據備份或數據恢復等操作,較好的防止數據丟失的手段。
3.支持通過Replication進行數據復制,通過master-slave機制,可以實時進行數據的同步復制,支持多級復制和增量復制,master-slave機制是Redis進行HA的重要手段。
單線程請求,所有命令串行執行,并發情況下不需要考慮數據一致性問題。
4.支持pub/sub消息訂閱機制,可以用來進行消息訂閱與通知。
5.支持簡單的事務需求,但業界使用場景很少,并不成熟。
Redis的缺點 :
1.Redis只能使用單線程,性能受限于CPU性能,故單實例CPU最高才可能達到5-6wQPS每秒(取決于數據結構,數據大小以及服務器硬件性能,日常環境中QPS高峰大約在1-2w左右)。
2.支持簡單的事務需求,但業界使用場景很少,并不成熟,既是優點也是缺點。
3.Redis在string類型上會消耗較多內存,可以使用dict(hash表)壓縮存儲以降低內存耗用。
4.Mc和Redis都是Key-Value類型,不適合在不同數據集之間建立關系,也不適合進行查詢搜索。比如redis的keys pattern這種匹配操作,對redis的性能是災難。
MongoDB是什么?
MongoDB是一個基于分布式文件存儲的數據庫。先解釋一下文檔的數據庫,即可以存放xml、json、bson類型系那個的數據。同時MongoDB是由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。
它支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
mongodb與mysql不同,mysql的每一次更新操作都會直接寫入硬盤,但是mongo不會,做為內存型數據庫,數據操作會先寫入內存,然后再會持久化到硬盤中去 ,但MongoDB采用的預分配空間的方式來防止文件碎片,所以MongoDB的數據文件很大。
MongoDB的特點是:
(1)面向文檔(2)高性能(3)高可用(4)易擴展(5)豐富的查詢語言
以上就是redis和mongodb優缺點的知識匯總,內容較為全面,小編相信有部分知識點可能是我們日常工作可能會見到或用到的。希望你能通過這篇文章學到更多知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。