1. 程式人生 > >Redis系列一之《Redis設計與實踐》整體觀感

Redis系列一之《Redis設計與實踐》整體觀感

屬於 磁盤 怎麽辦 template 編寫 鍵值 但是 為什麽 問題

  筆者別的Redis方面的書沒有讀過,讀完這一本,力薦,作者黃建宏,對Redis不太熟悉的,但是對編程稍微有些基礎的,全部

讀下來應該無壓力。作者的編寫和講解非常詳細,覆蓋的面基本上都講到,之前一直都是零零碎碎的閱讀別人的帖子,總感覺都是

碎的,連接不起來,作者分了四部分來講分別為數據結構與對象,單機數據庫的實現,多機數據庫的實現,獨立功能的實現。

  讀完一遍,整體感覺軟件設計並非我想象的那般正常人無法理解或者無法想到的,很多設計是正常邏輯"查漏補缺",類似Hash

結構的擴容,主從復制過程中的緩沖區設計其實也是大家能想到的,從A轉移到B,轉移需要時間,這個時間又有新的數據進來怎麽辦,

這個問題一般人也都想得到,並且處理方式也正是用緩沖區存下新進來的數據,並做一個標記,告訴它現在開始轉移了,後進來的數

據存在這兒,存到一定時間點後轉移到目標區域等等。

  在數據結構與對象這部分,先介紹了6種底層數據結構,了解數據結構的讀起來不會太艱難,他們分別是簡單動態字符串、整數集

合字典,鏈表,跳躍表,壓縮列表,這6種數據結構是Redis大多功能的底層實現。以這6種數據結構為底層實現,Redis創建了自己的對

象系統,這才是我們經常用到的字符串對象,列表對象,哈希對象,集合和有序集合對象,Redis的鍵值對都是對象,也就是鍵對象和

值對象,Redis總是以字符串對象作為鍵對象,這個和java中通常以String作為鍵的理由相似,多次散列要得到相同的整數結果。

  Redis為什麽快?因為他是一個內存數據庫,既然是內存數據庫,那麽就要考慮宕機問題,宕機了數據怎麽辦?存磁盤,Redis支持

持久化,有兩種方式,基於鍵值對保存的RDF方式和基於執行寫命令的AOF方式

  最精彩的部分屬於第三部分,也就是Sentinel,復制和集群這3章,這部分的設計看的讓人有點天馬行空的感覺,尤其是選舉領頭羊的

這一部分,簡直有點像讀小說一樣,大家互相發消息,互相收消息,互相判斷對方狀態,突然這廝不行了,A說,領頭羊不行了,你們怎

麽看?B說,我這裏也沒他消息,估計吧?C說,擦,我也沒,難道頭掛了?》》》過了一會兒,大家意識到,領頭羊真的不行了,於是

開始投票選舉爭取拉票,第一位過半(也可能不是過半,1/3?)的被選為新的領頭羊,其他人挨個兒滴血效忠。

  上面瞎扯了很多,總體讀下來還是有一番波瀾的,高潮部分,就是第三部分,Redis的命令很多,但是分類比較清晰,上手也比較容

易,目前集成在java項目中的兩種方式:Jedis和Spring集成的RedisTemplate.後面有時間我會繼續出系列來些幹貨,排版沒花時間,有緣

人見~~

  

Redis系列一之《Redis設計與實踐》整體觀感