Broker對消息的處理 BrokerController初始化的過程中,調(diào)用registerProcessor方法注冊了處理器,在注冊處理器的代碼中可以看到創(chuàng)建了處理消息發(fā)...
Broker對消息的處理 BrokerController初始化的過程中,調(diào)用registerProcessor方法注冊了處理器,在注冊處理器的代碼中可以看到創(chuàng)建了處理消息發(fā)...
Redis通過對KEY計算hash,將KEY映射到slot,集群中每個節(jié)點(diǎn)負(fù)責(zé)一部分slot的方式管理數(shù)據(jù),slot最大個數(shù)為16384。在集群節(jié)點(diǎn)對應(yīng)的結(jié)構(gòu)體變量clust...
集群請求命令處理 在Redis的命令處理函數(shù)processCommand(server.c)中有對集群節(jié)點(diǎn)的處理,滿足以下條件時進(jìn)入集群節(jié)點(diǎn)處理邏輯中: 啟用了集群模式,通過...
集群故障轉(zhuǎn)移 節(jié)點(diǎn)下線 在集群定時任務(wù)clusterCron中,會遍歷集群中的節(jié)點(diǎn),對每個節(jié)點(diǎn)進(jìn)行檢查,判斷節(jié)點(diǎn)是否下線。與節(jié)點(diǎn)下線相關(guān)的狀態(tài)有兩個,分別為CLUSTER_N...
Cluster消息類型定義 在Redis初始化服務(wù)initServer函數(shù)中,調(diào)用aeCreateTimeEvent注冊了時間事件,周期性的執(zhí)行serverCron函數(shù),在s...
在sentinelHandleRedisInstance函數(shù)中,如果是主節(jié)點(diǎn),需要做如下處理: 節(jié)點(diǎn)的狀態(tài)定義 客觀下線 sentinelCheckObjectivelyDo...
在的redis啟動函數(shù)main(server.c文件)中,對哨兵模式進(jìn)行了檢查,如果是哨兵模式,將調(diào)用initSentinelConfig和initSentinel進(jìn)行初始化...
IO線程初始化 Redis在6.0版本中引入了多線程,提高IO請求處理效率。 在Redis Server啟動函數(shù)main(server.c文件)中初始化服務(wù)之后,又調(diào)用了In...
aeEventLoop初始化 在server.c文件的initServer函數(shù)中,對aeEventLoop進(jìn)行了初始化: 調(diào)用aeCreateEventLoop函數(shù)創(chuàng)建aeE...
Redis List 在Redis3.2版之前,Redis使用壓縮列表和雙向鏈表作為List的底層實(shí)現(xiàn)。當(dāng)元素個數(shù)比較少并且元素長度比較小時,Redis使用壓縮列表實(shí)現(xiàn),否則...
有序集合Sorted Set zadd zadd用于向集合中添加元素并且可以設(shè)置分值,比如添加三門編程語言,分值分別為1、2、3: zrange zrange根據(jù)分值區(qū)間返回...
壓縮列表 壓縮列表是列表和哈希表的底層實(shí)現(xiàn)之一: 如果一個列表只有少量數(shù)據(jù),并且數(shù)據(jù)類型是整數(shù)或者比較短的字符串,redis底層就會使用壓縮列表實(shí)現(xiàn)。 如果一個哈希表只有少量...
Redis 字典 基本語法 字典是Redis中的一種數(shù)據(jù)結(jié)構(gòu),底層使用哈希表實(shí)現(xiàn),一個哈希表中可以存儲多個鍵值對,它的語法如下,其中KEY為鍵,field和value為值(也...
C語言字符串 C語言中使用char*字符數(shù)組表示字符串,'\0'來標(biāo)記一個字符串的結(jié)束,不過在使用的過程中我們不需要顯式的在字符串中加入'\0'。 存在問題 1.二進(jìn)制安全 ...