1,性能
兩者都比較高,性能應該不是我們的瓶頸。
壹般來說,在TPS中,redis和memcache差不多,但是比mongodb大。
2.操作方便
Memcache只有壹個數據結構。(鍵值)
Redis更豐富,在數據操作方面,redis更好,網絡IO次數更少,還提供了list,set,
散列等數據結構的存儲。
Mongodb支持豐富的數據表達、索引,最類似於關系數據庫,支持非常豐富的查詢語言。
3、內存空間的大小和數據的大小。
Redis在2.0版本之後加入了自己的VM特性,突破了物理內存的限制;您可以設置鍵值。
周期時間(類似於memcache)
Memcache可以修改最大可用內存,並采用LRU算法。Memcached代理軟件magent,如建立
10 4G Memcache集群相當於40G。magent-s 10.1.2 . 1-s 1.2 . 2:11211-b
10.1.2 . 3:14000 MongoDB適合存儲大量數據。它依賴操作系統VM進行內存管理,內存消耗也很嚴重。
不要和其他服務在壹起。
4.可用性(單點問題)
對於單點問題,
Redis,依托客戶端實現分布式讀寫;在主從復制中,每次從節點重新連接到主節點時,都依賴於integer。
快照,由於性能和效率問題,沒有增量復制,
所以單點問題比較復雜;不支持自動分片,它依賴於程序來設置壹致的哈希機制。
壹種替代方法是自己進行主動復制(多存儲),而不是redis本身的復制機制,或者將其改為
增量復制的方式(需要自己實現),壹致性問題和性能權衡
Memcache本身沒有數據冗余機制,沒有必要;為了防止故障,使用成熟的散列或環。
為了解決單點故障引起的抖動問題,提出了壹種算法。
MongoDB支持主從、replicaset(內部paxos選舉算法、自動故障恢復)和自動分片機制,為客戶端屏蔽了故障轉移和分段機制。
5.可靠性(持久性)
對於數據持久性和數據恢復,
Redis支持(snapshot,aof):依靠快照實現持久性,AOF增強了可靠性,但同時也影響了性能。
大聲地
不支持Memcache,通常用於緩存提高性能;
MongoDB從1.8版本開始采用binlog模式支持持久可靠性。
6.數據壹致性(交易支持)
Memcache使用cas來確保並發場景中的壹致性。redis事務支持較弱,只能保證事務中每個操作的連續執行。
MongoDB不支持事務。
7.數據分析
MongoDB內置了數據分析(mapreduce)功能,其他不支持。
8.應用場景
Redis:更多的性能運算和更少數據的運算。
Memcache:用於在動態系統中降低數據庫負載,提高性能;做緩存來提高性能(適合更多的讀寫)
少,對於大量的數據,可以使用分片)
MongoDB:主要解決海量數據的訪問效率問題。
表格比較:
內存數據庫
定義值時,數據類型應該是固定的。數據類型不是必需的。
有字符串,鏈表,集合和有序集。
虛擬內存不支持
過期策略支持支持
分布式主從,壹主壹從或壹主多從。
存儲數據安全性不支持保存到dump.rdb。
災難恢復不支持僅附加文件(aof)進行數據恢復。
表演
1,type-memcache和redis都是在內存中存儲數據,所以是內存數據庫。當然,memcache也可以用來緩存其他東西,比如圖片等等。
2.數據類型——Memcache在添加數據時指定數據的字節長度,而redis沒有。
3.虛擬內存——當物理內存用完時,可以將壹些長時間不用的值交換到磁盤上。
4.過期策略——Memcache在設置時指定,例如set key1 0 0 8,即永不過期。Redis可以連接
例如,設置到期時間,如到期名稱10。
5.分布式設置的memcache集群,使用magent作為主節點,多個從節點;Redis可以是主,也可以是從。椰子樹
有壹個主人和壹個奴隸。
6、存儲數據安全——斷電MemCache壞了,數據沒了;Redis可以定期保存到磁盤。
7、容災——memcache同上,redis丟失可以通過aof恢復。
Memecache端口11211。
yum -y安裝內存緩存
yum -y安裝php-pecl-memcache
/etc/init . d/memcached start memcached-d-P 111-u memcached-m 64-c 1024-P/var/run/memcached/memcached . PID
-d啟動壹個守護進程。
-p端口
-m分配的內存是m。
-c最大運行並發數-P memcache的pid
//0壓縮(是否MEMCACHE_COMPRESSED) 30秒過期時間
//刪除5是超時
$memcache =新的Memcache;$ memcache-& gt;連接(' 127.0.0.1 ',11211);$ memcache-& gt;集('名','楊',0,30);
如果(!$ memcache-& gt;添加('姓名','蘇珊',0,30)) {
//echo‘蘇珊是存在的’;} $ memcache-& gt;替換('名稱','獅子',0,300);echo $ memcache-& gt;get(' name ');
//$ memcache-& gt;刪除('名稱',5);
printf " stats \ r \ n " | NC 127 . 0 . 0 . 1 11211
Telnet本地主機11211 stat quit。
Redis的配置文件端口6379
/etc/Redis.conf啟動Redis。
Redis-server /etc/redis.conf插入壹個值。
Redis-cli設置test“phper . yang”來獲取鍵值。
Redis-cli get test關閉Redis。
Redis-cli關閉關閉所有
redis-cli -p 6379關閉& lt?服務器端編程語言(Professional Hypertext Preprocessor的縮寫)
$ redis =新
redis();$ redis-& gt;連接(' 127.0.0.1 ',6379);$ redis-& gt;設置('測試',
hello World’);echo $ redis-& gt;get(' test ');Mongodb
Apt-get安裝mongo mongo可以進入shell命令行。
Pecl安裝mongo Mongodb類似於phpmyadmin操作平臺RockMongo。