原创 Redis 源碼分析之主從複製(3)

redis 代碼中主從複製流程的核心部分在於狀態機的流轉。 單機模式下以 SLAVEOF 命令觸發;cluster 模式下以 REPLICATE 命令觸發,且 cluster 模式下不支持 SLAVEOF 命令。 在該過程中,master

原创 Redis 源碼分析之主從複製(2)

repl backlog 是一個由 master 維護的固定長度的環形 buffer,默認大小 1M,在配置文件中可以通過 repl-backlog-size 項進行配置。可以把它看成一個 FIFO 的隊列,當隊列中元素過多時,最早進入隊列

原创 Redis 源碼分析之主從複製(1)

在分佈式系統中,爲了解決單點問題,通常會把數據集複製多個副本部署到其他機器,以滿足故障恢復和負載均衡等需求。redis 爲我們提供的複製功能,實現了相同數據的多個副本,這也是其實現 HA 的基礎。 參與 redis 複製功能的節點被分成兩

原创 Redigo源碼分析

使用 golang 開發項目時經常會使用到 redis 服務,這時就需要一個趁手的 sdk,所以就在 github 中找了一個 star 較多的項目,這就是本篇的主角 redigo,同時這也是redis 的官方推薦。 不過在使用過程中遇到了

原创 Redis 源碼分析之故障轉移

在 Redis cluster 中故障轉移是個很重要的功能,下面就從故障發現到故障轉移整個流程做一下詳細分析。 故障檢測 PFAIL 標記 集羣中每個節點都會定期向其他節點發送 PING 消息,以此來檢測對方是否在線,如果接收 PING 消

原创 Redis 持久化之 AOF 重寫

因爲 AOF 持久化是通過保存被執行的寫命令來記錄數據庫狀態的,所以隨着服務器運行時間的流逝,AOF 文件中的內容會原來越多,文件的體積也會越來越大,若不加以控制,體積過大的 AOF 文件很可能對 Redis 服務器、甚至整個宿主計算機造成

原创 Redis 持久化之 AOF

除了 RDB 持久化功能之外,Redis 還提供了 AOF(Append Only File)持久化功能。與 RDB 持久化通過保存數據庫中的鍵值對來記錄數據庫狀態不同,AOF 持久化是通過保存 Redis 服務器所執行的寫命令來記錄數據庫

原创 詳解Golang中下劃線的使用方法

這篇文章主要介紹了詳解Golang中下劃線的使用方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧 在 Golang 裏, _ (下劃線)是個特殊的標識符。前幾天看 gin 源碼,看到

原创 Golang中下劃線的使用

在 Golang 裏, _ (下劃線)是個特殊的標識符。前幾天看 gin 源碼,看到一個有意思的用法。雖然網上的總結博客已有很多,但是總是有點欠缺,於是就有了這一篇,方便以後查閱。 用在 import 在導包的時候,常見這個用法,尤其是項目

原创 Redis 源碼分析之 cluster meet

Redis cluster 是 redis 官方提出的分佈式集羣解決方案,在此之前,有一些第三方的可選方案,如 codis、Twemproxy等。cluster 內部使用了 gossip 協議進行通信,以達到數據的最終一致性。詳細介紹可參考

原创 Redis 啓動流程

說說 redis 的啓動流程。 首先要找到啓動函數,我們知道 C 程序從 main 函數開始,所以,就找到了“夢想”開始的地方 server.c -> main。這裏主要講啓動過程中的主要部分,所以並不會一一涉及到。 大概啓動流程 init