Redis從入門到進階

華為雲學院發表於2019-04-18

Redis從入門到進階

 

今天跟大家交流一下 Redis的一些學習材料,希望透過今天的分享,能夠帶領大家簡單入門Redis。

首先介紹一下什麼是 Redis? Redis全稱是Remote Dictionary Server,是一種Key-Value型別的開源快取中介軟體。可用於資料庫前端快取、事件釋出或訂閱、高速佇列等多種場景。提供字串(String)、雜湊(Hash)、列表(List)、集合結構(Set、Sorted Set)、流(Stream)等資料型別的直接存取。同時提供了基於記憶體的讀取的方式,可以把記憶體的資料同步到磁碟上。Redis是當前最流行的記憶體資料庫,在AWS最大的公有云廠商,MySQL是資料庫排名第一的,而排名第二的是Redis。資料庫還有一個流行的排行榜叫DBEngines,DBEngines裡面Redis在K-V 儲存裡面排名第一,在所有資料庫裡面排名第七。除此之外,Redis其實不僅侷限在K-V領域,下圖是在RedisConf最新發布的一張圖:

                                             

在這張圖中可以看得出, Redis除了可以當K-V資料庫之外,它還可以當做文字搜尋,相當於Elasticsearch;可以當做圖資料庫;同時它可以當文件資料庫,開源的有MongoDB;它可以在訊息領域有所建樹,相當於卡夫卡,它可有提供streams型別的能力。此外在2019年的Redisconf上,Redis作者演示了一個實時聊天demo,這表明Redis可以把AI能力帶進來,可以做機器學習的。大大擴充套件了Redis的疆界,Redis是源於K-V,但是遠遠超於K-V。

接下來介紹一下哪些使用者會使用到 Redis。基本上來說所有的大、中、小型分散式系統應用都會使用到Redis。因為快取是分散式系統中的重要的元件,主要解決高併發、大資料場景之下熱點資料的訪問的效能問題。提供高效能的資料快速訪問的能力。

接下來我會舉幾個生活中的案例給大家。首先是微信搶紅包的例子,微信搶紅包是一個很高頻的操作。大家想一下春晚的時候,有幾十億的華人同時點選搶紅包操作,這會帶來非常大的流量。如果這個流量直接壓到資料庫上,那基本上資料庫就直接崩掉了,毫無疑問。但如果在 MySQL前面加設一個Redis,那麼可以把MySQL中高頻的、99%以上的流量解除安裝到Redis上。那我們只需要應用的這兩步的操作:首先應用先到Redis裡面去查取這個紅包是不是還有還有金額?同時確認人數是不是達到了上限。如果條件滿足的情況之下,再對資料庫進行讀取的二次的確認操作。這樣它就只會把有效的流量透傳到資料庫上,而把大部分的資料攔截在Redis這一側,從而達到了保護MySQL資料庫的作用。

還有一個案例,就是我們在華為商城銷售華為手機的時候遇到的購物車的案例。購物車到底選擇用什麼資料庫比較好,我們最早的時候使用的是 MySQL,因為畢竟他是跟客戶的資料相關。但在實際的使用過程中,我們發現購物車的邏輯其實也是比較多的,因為它涉及到贈品,它涉及到物品的關聯打折,所以它涉及到比較複雜的SQL操作。在這種情況之下MySQL的操作很容易有效能瓶頸問題。曾經我們有駭客嘗試考驗我們的購物車能力,就只是把購物車的數量做自動增減,一直併發的刷,就可以把那個資料庫給搞壞掉了。我們在最佳化的過程中就發現了這個效能瓶頸問題,把MySQL資料庫解除安裝成為Redis資料庫。使用Redis之後,有幾個效果,一是它可以把非關鍵流量給解除安裝下來。那另外一方面,就是我們利用到Redis高效能的能力,能夠把針對是高頻的一些操作,變成一個簡單的一個K-V操作,那對整個系統的效率的提升其實是有很大的幫助的。除此之外,Redis在很多產品中都有應用,比如說在小影片領域中,它可以快取一些使用者的關係;比如遊戲中的積分排行榜,可以使用到Redis的排行的能力,很快就可以把屬於Top級的使用者顯示出來;比如在訂票系統裡面,可以用Redis來快取一些使用者的資訊。透過這種方式,Redis基本上不帶行業屬性的,可以進入到任何一個分散式系統裡面,廣泛應用。

以上簡單介紹了 Redis的發展概況和使用場景,接下來還有Redis資料結構、例項引數配置、備份恢復與遷移等操作的講解和演示,想要學習嗎,立即報名華為雲學院( https://edu.huaweicloud.com/ )《 Redis超速入門》課程,一起用七天的時間透過實戰環境快速掌握Redis。

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556022/viewspace-2641785/,如需轉載,請註明出處,否則將追究法律責任。

相關文章