文章出處

mongodb和memcached不是一個范疇內的東西。mongodb是文檔型的非關系型數據庫,其優勢在于查詢功能比較強大,能存儲海量數據。mongodb和memcached不存在誰替換誰的問題。

和memcached更為接近的是redis。它們都是內存型數據庫,數據保存在內存中,通過tcp直接存取,優勢是速度快,并發高,缺點是數據類型有限,查詢功能不強,一般用作緩存。在我們團隊的項目中,一開始用的是memcached,后來用redis替代。

相比memcached:

1、redis具有持久化機制,可以定期將內存中的數據持久化到硬盤上。

2、redis具備binlog功能,可以將所有操作寫入日志,當redis出現故障,可依照binlog進行數據恢復。

3、redis支持virtual memory,可以限定內存使用大小,當數據超過閾值,則通過類似LRU的算法把內存中的最不常用數據保存到硬盤的頁面文件中。

4、redis原生支持的數據類型更多,使用的想象空間更大。

5、前面有位朋友所提及的一致性哈希,用在redis的sharding中,一般是在負載非常高需要水平擴展時使用。我們還沒有用到這方面的功能,一般的項目,單機足夠支撐并發了。redis 3.0將推出cluster,功能更加強大。
6. 性能

Redis作者的說法是平均到單個核上的性能,在單條數據不大的情況下Redis更好。為什么這么說呢,理由就是Redis是單線程運行的。
因為是單線程運行,所以和Memcached的多線程相比,整體性能肯定會偏低。
因為是單線程運行,所以IO是串行化的,網絡IO和內存IO,因此當單條數據太大時,由于需要等待一個命令的所有IO完成才能進行后續的命令,所以性能會受影響。

 

簡介

MongoDB更類似Mysql,支持字段索引、游標操作,其優勢在于查詢功能比較強大,擅長查詢JSON數據,能存儲海量數據,但是不支持事務。

Mysql在大數據量時效率顯著下降,MongoDB更多時候作為關系數據庫的一種替代。

內存管理機制

Redis數據全部存在內存,定期寫入磁盤,當內存不夠時,可以選擇指定的LRU算法刪除數據。

MongoDB數據存在內存,由linux系統mmap實現,當內存不夠時,只將熱點數據放入內存,其他數據存在磁盤。

支持的數據結構

Redis支持的數據結構豐富,包括hash、set、list等。

MongoDB數據結構比較單一,但是支持豐富的數據表達,索引,最類似關系型數據庫,支持的查詢語言非常豐富。

性能

二者性能都比較高,應該說都不會是瓶頸。

可靠性

二者均支持持久化。

集群

         MongoDB集群技術比較成熟,Redis從3.0開始支持集群。

不適用場景

Ø  需要使用復雜sql的操作

Ø  事務性系統


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()