redis、memcache、mongoDB 做了對比

來源:互聯網
上載者:User

標籤:

from: http://yang.u85.us/memcache_redis_mongodb.pdf

 

從以下幾個維度,對redis、memcache、mongoDB 做了對比。
1、效能
都比較高,效能對我們來說應該都不是瓶頸。
總體來講,TPS 方面redis 和memcache 差不多,要大於mongodb。
2、操作的便利性
memcache 資料結構單一。(key-value)
redis 豐富一些,資料操作方面,redis 更好一些,較少的網路IO 次數,同時還提供list,set,
hash 等資料結構的儲存。
mongodb 支援豐富的資料表達,索引,最類似關係型資料庫,支援的查詢語言非常豐富。
3、記憶體空間的大小和資料量的大小
redis 在2.0 版本後增加了自己的VM 特性,突破實體記憶體的限制;可以對key value 設定過
期時間(類似memcache)
memcache 可以修改最大可用記憶體,採用LRU 演算法。Memcached 代理軟體magent,比如建立
10 台4G 的Memcache 叢集,就相當於有了40G。magent -s 10.1.2.1 -s 10.1.2.2:11211 -b
10.1.2.3:14000
mongoDB 適合大資料量的儲存,依賴作業系統VM 做記憶體管理,吃記憶體也比較厲害,服務
不要和別的服務在一起。

4、可用性(單點問題)
對於單點問題,
redis,依賴用戶端來實現分布式讀寫;主從複製時,每次從節點重新串連主節點都要依賴整
個快照,無差異複寫,因效能和效率問題,
所以單點問題比較複雜;不支援自動sharding,需要依賴程式設定一致hash 機制。
一種替代方案是,不用redis 本身的複製機制,採用自己做主動複製(多份儲存),或者改成
差異複寫的方式(需要自己實現),一致性問題和效能的權衡
Memcache 本身沒有資料冗餘機制,也沒必要;對於故障預防,採用依賴成熟的hash 或者環
狀的演算法,解決單點故障引起的抖動問題。
mongoDB支援master-slave,replicase(t 內部採用paxos選舉演算法,自動故障恢複),auto sharding
機制,對用戶端屏蔽了容錯移轉和切分機制。
5、可靠性(持久化)
對於資料持久化和資料恢複,
redis 支援(快照、AOF):依賴快照進行持久化,aof 增強了可靠性的同時,對效能有所影

memcache 不支援,通常用在做緩衝,提升效能;
MongoDB 從1.8 版本開始採用binlog 方式支援持久化的可靠性
6、資料一致性(事務支援)
Memcache 在並發情境下,用cas 保證一致性

redis 事務支援比較弱,只能保證事務中的每個操作連續執行
mongoDB 不支援事務
7、資料分析
mongoDB 內建了資料分析的功能(mapreduce),其他不支援
8、應用情境
redis:資料量較小的更效能操作和運算上
memcache:用於在動態系統中減少資料庫負載,提升效能;做緩衝,提高效能(適合讀多寫
少,對於資料量比較大,可以採用sharding)
MongoDB:主要解決海量資料的訪問效率問題。

1、類型——memcache 和redis 都是將資料存放在記憶體,所以是記憶體資料庫。當然,memcache
也可用於緩衝其他東西,例片等等。
2、資料類型——Memcache 在添加資料時就要指定資料的位元組長度,而redis 不需要。
3、虛擬記憶體——當實體記憶體用完時,可以將一些很久沒用到的value 交換到磁碟。
4、到期策略——memcache 在set 時就指定,例如set key1 0 0 8,即永不到期。Redis 可以通
過例如expire 設定,例如expire name 10。
5、分布式——設定memcache 叢集,利用magent 做一主多從;redis 可以做一主多從。都可
以一主一從。
6、儲存資料安全——memcache 斷電就斷了,資料沒了;redis 可以定期save 到磁碟。
7、災難恢複——memcache 同上,redis 丟了後可以通過aof 恢複。
Memecache 連接埠11211
yum -y install memcached
yum -y install php-pecl-memcache
/etc/init.d/memcached start
memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid
-d 啟動一個守護進程
-p 連接埠
-m 分配的記憶體是M
-c 最大運行並發數

-P memcache 的pid
//0 壓縮(是否MEMCACHE_COMPRESSED) 30 秒失效時間
//delete 5 是timeout
<?php
$memcache = new Memcache;
$memcache -> connect(‘127.0.0.1‘, 11211);
$memcache -> set(‘name‘,‘yang‘,0,30);
if(!$memcache->add(‘name‘,‘susan‘,0, 30)) {
//echo ‘susan is exist‘;
}
$memcache -> replace(‘name‘, ‘lion‘, 0, 300);
echo $memcache -> get(‘name‘);
//$memcache -> delete(‘name‘, 5);
printf "stats\r\n" | nc 127.0.0.1 11211
telnet localhost 11211 stats quit 退出
Redis 的設定檔連接埠6379
/etc/redis.conf
啟動Redis
redis-server /etc/redis.conf
插入一個值
redis-cli set test "phper.yang"
擷取索引值
redis-cli get test
關閉Redis
redis-cli shutdown 關閉所有
redis-cli -p 6379 shutdown
<?php
$redis=new Redis();
$redis->connect(‘127.0.0.1‘,6379);
$redis->set(‘test‘, ‘Hello World‘);
echo $redis->get(‘test‘);
Mongodb
apt-get install mongo
mongo 可以進入shell 命令列
pecl install mongo
Mongodb 類似phpmyadmin 操作平台RockMongo

redis、memcache、mongoDB 做了對比

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.