mongodb和memcached不是一個範疇內的東西。mongodb是文檔型的非關係型數據庫,其優點在於查詢功能比較強大,能存儲海量數據。mongodb和memcached不存在誰替換誰的問題。
和memcached更爲接近的是redis。它們都是內存型數據庫,數據保存在內存中,經過tcp直接存取,優點是速度快,併發高,缺點是數據類型有限,查詢功能不強,通常用做緩存。在咱們團隊的項目中,一開始用的是memcached,後來用redis替代。
相比memcached:
一、redis具備持久化機制,能夠按期將內存中的數據持久化到硬盤上。
二、redis具有binlog功能,能夠將全部操做寫入日誌,當redis出現故障,可依照binlog進行數據恢復。
三、redis支持virtual memory,能夠限定內存使用大小,當數據超過閾值,則經過相似LRU的算法把內存中的最不經常使用數據保存到硬盤的頁面文件中。
四、redis原生支持的數據類型更多,使用的想象空間更大。
五、前面有位朋友所說起的一致性哈希,用在redis的sharding中,通常是在負載很是高須要水平擴展時使用。咱們尚未用到這方面的功能,通常的項目,單機足夠支撐併發了。redis 3.0將推出cluster,功能更增強大。
六、redis更多優勢,請移步官方網站查詢。redis
7. 性能算法
Redis做者的說法是平均到單個核上的性能,在單條數據不大的狀況下Redis更好。爲何這麼說呢,理由就是Redis是單線程運行的。
由於是單線程運行,因此和Memcached的多線程相比,總體性能確定會偏低。
由於是單線程運行,因此IO是串行化的,網絡IO和內存IO,所以當單條數據太大時,因爲須要等待一個命令的全部IO完成才能進行後續的命令,因此性能會受影響。mongodb