国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

redis、memcached、mongoDB 對比

2019-11-09 13:32:57
字體:
來源:轉載
供稿:網友
Mongodb和Memcached不是一個范疇內的東西。Mongodb是文檔型的非關系型數據庫,其優勢在于查詢功能比較強大,能存儲海量數據。Mongodb 和 Memcached不存在誰替換誰的問題。 Memcached 和 Redis它們都是內存型數據庫,數據保存在內存中,通過tcp直接存取,優勢是速度快,并發高。 Memcached 是一個高性能的分布式內存對象緩存系統,用于動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提供動態、數據庫驅動網站的速度。 Memcached 的分布式不是在服務器端實現的,而是在客戶端應用中實現的,即通過內置算法制定目標數據的節點,Memcached 的分布式是基于客戶端的Key的hash來做均衡,是個偽分布式的系統。 Redis是一個key-value存儲系統。和 Memcached 類似,它支持存儲的value類型相對更多,包括string(字符串)、 list(鏈表)、set(集合)和zset(有序集合)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,Redis支持各種不同方式的排序。與 Memcached 一樣,為了保證效率,數據都是緩存在內存中。區別的是Redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件。 1、性能    總體來講,TPS 方面 Redis 和 Memcache 差不多,要大于 Mongodb。    Redis 支持高并發量,官方宣傳支持10萬級別的并發讀寫。 2、操作的便利性    Memcached 數據結構單一(key-value)。    Redis 支持的數據類型更多,數據操作方面,Redis 更好一些,也可以在服務器端直接對數據進行豐富的操作,這樣可以減少網絡IO次數和數據體積,同時還提供String、Hash、List、Set和Sorted Set等數據結構的存儲。    Mongodb 支持豐富的數據表達,索引,最類似關系型數據庫,支持的查詢語言非常豐富。 3、內存空間的大小和數據量的大小    Redis 在 2.0 版本后增加了自己的 VM 特性,突破物理內存的限制,可以限定內存使用大小,當數據超過閾值,則通過類似LRU的算法把內存中的最不常用數據保存到硬盤的頁面文件中;可以對 key value 設置過期時間(類似 Memcached);Redis一個value最大支持512MB。    Memcached 可以修改最大可用內存,采用 LRU 算法;Memcached單個key-value大小有限,一個value最大只支持1MB。    MongoDB 適合大數據量的存儲,依賴操作系統 VM 做內存管理,吃內存也比較厲害,服務不要和別的服務在一起。 4、可靠性(持久化)    Redis 具有持久化機制,可以定期將內存中的數據持久化到硬盤上,Redis 支持(快照、AOF),依賴快照進行持久化,aof 增強了可靠性的同時,對性能有所影響。    Memcached 不支持數據持久化,斷電或重啟后數據消失,通常用在做緩存,提升性能。    MongoDB 從 1.8 版本開始采用 binlog 方式支持持久化的可靠性。 6、數據一致性(事務支持)    Memcached 在并發場景下,用 cas 保證一致性Redis 事務支持比較弱,只能保證事務中的每個操作連續執行。    MongoDB 不支持事務。 7、數據分析    MongoDB 內置了數據分析的功能(maPReduce),其他不支持。 8、應用場景    Redis:適用于對讀寫效率要求都很高,數據處理業務復雜和對安全性要求較高的系統;數據量較小的更性能操作和運算,Redis 只使用單核,而 Memcached 可以使用多核,所以平均每一個核上Redis在存儲小數據時比Memcached性能更高。    Memcached:用于在動態系統中減少數據庫負載,提升性能;做緩存,提高性能(適合讀多寫少,對于數據量比較大,可以采用 sharding)。    MongoDB:主要解決海量數據的訪問效率問題。 總結:     ? 沒有必要過于關注性能,因為二者的性能都已經足夠高了。由于Redis只使用單核,而Memcached可以使用多核,所以二者比較起來,平均每一個核上,Redis在存儲小數據時比Memcached性能更高。而在100k以上的數據中,Memcached性能要高于Redis。雖然Redis最近也在存儲大數據的性能上進行優化,但是比起Memcached,還是稍有遜色。說了這么多,結論是,無論你使用哪一個,每秒處理請求的次數都不會成為瓶頸。     ? 在內存使用效率上,如果使用簡單的key-value存儲,Memcached的內存利用率更高。而如果Redis采用hash結構來做key-value存儲,由于其組合式的壓縮,其內存利用率會高于Memcached。當然,這和你的應用場景和數據特性有關。     ? 如果你對數據持久化和數據同步有所要求,那么推薦你選擇Redis。因為這兩個特性Memcached都不具備。即使你只是希望在升級或者重啟系統后緩存數據不會丟失,選擇Redis也是明智的。     ? 當然,最后還得說到你的具體應用需求。Redis相比Memcached來說,擁有更多的數據結構,并支持更豐富的數據操作。通常在Memcached里,你需要將數據拿到客戶端來進行類似的修改再set回去。這大大增加了網絡IO的次數和數據體積。在Redis中,這些復雜的操作通常和一般的GET/SET一樣高效。所以,如果你需要緩存能夠支持更復雜的結構和操作,那么Redis會是不錯的選擇。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白水县| 麟游县| 宁津县| 朝阳县| 黔西县| 武汉市| 广河县| 华蓥市| 杭锦旗| 苏尼特左旗| 老河口市| 吴堡县| 大同市| 亳州市| 菏泽市| 石林| 鄄城县| 汪清县| 子洲县| 泸西县| 龙山县| 庆元县| 黔南| 阿克苏市| 广州市| 海兴县| 太仆寺旗| 博罗县| 凤山市| 长海县| 屯昌县| 福贡县| 桐乡市| 舞阳县| 葵青区| 静乐县| 彝良县| 株洲市| 辽阳县| 榆树市| 德保县|