一、什么是主從復制、讀寫分離、為什么要使用
主從復制:是一種數據備份的方案。
簡單來說,是使用兩個或兩個以上相同的數據庫,將一個數據庫當做主數據庫,而另一個數據庫當做從數據庫。在主數據庫中進行相應操作時,從數據庫記錄下所有主數據庫的操作,使其二者一模一樣。
讀寫分離:是一種讓數據庫更穩定的的使用數據庫的方法。
是在有從數據庫的情況下使用,當主數據庫進行對數據的增刪改也就是寫操作時,將查詢的任務交給從數據庫。
為什么要使用主從分離和讀寫操作呢?
主從復制:1、當主數據庫出現問題時,可以當從數據庫代替主數據庫,可以避免數據的丟失。
2、可以進行讀寫分離
讀寫分離:1、避免從數據庫進行寫操作而導致的主從數據庫數據不一致的情況,因為當主從數據庫數據不一致時,那么從數據庫最主要的備份任務就沒有意義了。
2、減輕主數據庫的壓力。因為進行寫操作更耗時,所以如果不進行讀寫分離的話,寫操作將會影響到讀操作的效率。
二、什么是集群
如果說主從復制是各司其職的話,那么集群就是一群同樣的個體做着同樣的事情。在Redis中,數據的寫入操作次數很大的情況下,只使用單獨一個服務器來進行寫入操作的話,效率不高,那么如果使用集群方案,利用多個Redis服務器來進行寫操作,大量的數據,你寫一點,我寫一點,大家都分擔一點,那么效率會高很多。就像一小塊土地需要挖土,那么一台挖掘機就足夠,但是遇上了一大片土地,雖然一台挖掘機也能夠完成任務,但是需要很久很久,那么我現在再找個十台挖掘機一起挖土,那么效率就會高很多了。
集群模式的思想可以在多處使用。總之就是,一個個體完成不了或者說效率很低的場景下,都可以使用這種思想。
就如下面將要說到的哨兵,一個哨兵監視一個服務器集群肯定是不夠的,那么就需要一個哨兵集群來監視。
三、什么是哨兵模式
是一種容災方案。
哨兵:實則是一個在特殊模式下的Redis服務器,里面存儲的是自己本身的信息,主服務器的信息,從服務器的信息。
用一個或者多個哨兵來監視主服務器(也就是進行寫操作的服務器)是否在正常執行任務,一旦哨兵發現主服務器不可用時,就找到一個合適的從服務器成為主服務器。
四、為什么要用Redis數據庫
Redis數據庫是NOSQL數據庫中以key-value存儲模式下的一種數據庫。
那么NOSQL又是什么數據庫呢?非關系型數據庫。
什么要使用Nosql?
1) 當數據量的總大小一個機器放不下時。
2) 數據索引一個機器的內存放不下時。
3) 訪問量(讀寫混合)一個實例放不下時。
在信息爆炸的今天,數據的存儲,對數據的查詢都是非常頻繁且非常大量的。關系型數據庫的就顯得力不從心了,擴展性較差,查詢簡單條件數據的效率較低等缺點,無意是致命的。而NOSQL數據庫中的數據之間並無關系,這一特點造就了NOSQL的易擴展性,讀寫性能高等優勢。所以面對大量的數據讀寫,非關系型數據庫相比較於關系型數據庫有着巨大的優勢。
那么Redis數據庫為什么又在NOSQL中脫穎而出?
我認為是有以下幾個原因,
1、Redis支持多種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。可以在大部分的場景中使用。
2、支持主從復制,讀寫分離。讀寫效率大大提升。
3、數據存儲在內存中,可用來做緩存。需要持久化的數據就將其存入硬盤,不需要持久化的數據,可以進行短暫的存儲,提高訪問速度。