最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis服務器的啟動過程分析

 更新時間:2015年04月08日 09:39:41   投稿:junjie  
這篇文章主要介紹了Redis服務器的啟動過程分析,本文講解了初始化Redis服務器全局配置、加載配置文件、初始化服務器、加載數據、開始網絡監(jiān)聽等內容,需要的朋友可以參考下

本文將通過分析代碼來介紹Redis的啟動過程,通過查看Redis 的啟動腳本,得知Redis的啟動時從Redis.c的main方法開始的。Redis啟動可以分為以下幾個步驟:

1.初始化Redis服務器全局配置
2.重置服務器Save參數(具體下文詳解)和加載配置文件
3.初始化服務器
4.加載數據庫
5.開始網絡監(jiān)聽

一,初始化Redis服務器全局配置。這一步驟主要是主要是根據Redis.h中設置的Static值來初始化Redis服務器配置,這里設置是Redis服務器的默認配置。如:

·TCP Port,Redis Client的缺省Timeout;
·Redis缺省的數據庫數目;
·Redis Append 持久化方式的參數設置;
·Redis的所支持的各種數據結構的缺省值的設置;
·Redis內存Swap相關設置;
·Redis Master & Slave相關的配置;
·Redis Command Table初始化。

 二,加載配置文件:

這一步是通過讀取的配置文件來對Redis服務器進行設置,將會覆蓋上一步的某些缺省設置。打開下載下來的Redis源代碼,我們可以看到其根目錄下有一個默認的配置文件redis.conf。需要注意的是,如果在啟動Redis的時候沒有指定配置文件,則Redis服務器在啟動的時候是不會加載這個默認的配置文件進行配置的。而且這個默認的配置文件和第一步中得全局默認缺省配置不盡相同,比如針對Redis的Append模式的數據保存策略的配置,redis.conf里面的設置是:

save 900 1 -------15分鐘內一次更新
save 300 10 ------5分鐘內10次更新
save 60 10000 ---1分鐘內10000次更新。

而上一步里面的默認缺省配置確實:

save 60*60 1 -------一個小時內1次更新
save 300 100 ------5分鐘內100次更新
save 60 10000 ---1分鐘內10000次更新。

因此我們在啟動Redis的時候如果默認配置不能滿足要求,則需要指明配置文件進行配置。

三,初始化服務器:

初始化服務器是在initServer()方法中完成的,次方法利用上兩步設置的參數進一步初始化服務器:

·創(chuàng)建用來維護clients和slaves的list
·創(chuàng)建共享對象。redisObject這個struct里有個變量叫做refcount,這個變量就是用來實現共享的。Redis的對象目前Redis只支持共享StringObject。Redis的共享對象有兩大類比:第一類:Redis server的各種操作需要經常用到的各類對象,如:Redis Command的分隔符 "\r\n",用于Redis command的reply的"+OK\r\n"或者"-ERR\r\n"等對象,因為在Redis的各種操作這類對象要被頻繁使用,所以就在啟動Redis的時候創(chuàng)建好,然后共用這些對象,減少時間成本和空間成本;第二,類的共享對象就是對應于數字的StringObject,如:Set "olylakers1" 1234; Set "olylakes2" 1234;在Redis內部,"olylakers1"和"olylakers2"這兩個key都指向由數字1234轉化的StringObject。這樣在海量數據和特定存儲內容下,可以節(jié)省大量的內存空間??捎猛ㄟ^REDIS_SHARED_INTEGERS這個參數來指定Redis啟動的時候創(chuàng)建多少個第二類共享對象,默認的參數是10000,即創(chuàng)建的StrongObject個取值范圍是0-9999之間。

·創(chuàng)建Pub/Sub通道
·初始化網絡監(jiān)聽EventLoop的相關內容,如eventLoop,timeEvent,fileEvent等
·如果開啟了VM,則初始化虛擬內存相關的IO/Thread

四,加載數據:

根據配置的不同,Redis加載數據的源也不一樣,如果在配置文件里設置了appendonly  yes(默認是no),那么就從appendfile加載數據,反之則從RedisDb加載數據

·從appendfile加載數據:我們先來看一下appendfile的內容是什么。下面的一條記錄摘取自appendfile:SET $9 olylakers $3 oly。很顯,appendfile保存的就是redis server接收到的各種命令,那么從appendfile加載數據就是redis server從appenfile里面讀取這些命令的記錄,然后重新把這些命令執(zhí)行一遍即可。需要注意的是,如果開啟了VM,那么在從appendfile加載數據的時候可能要涉及swap操作。
·從redisdb加載數據:如果沒有開啟appendonly,那么則需要從db file加載數據到內存,其過程是:
1.通過處理select命令,選擇DB
2.然后從db file讀取key和value
3.檢查key是否過期,如果過期則跳過這個key,如果不過期,則把數據Add到對應的db的dict中
4.如果開啟了VM,則從db file中l(wèi)oad數據,也可能涉及到swap操作

五,開始網絡監(jiān)聽:

Redis的網絡監(jiān)聽沒有采用libevent等,而是自己實現了一套簡單的機遇event驅動的API,具體見ae.c。

相關文章

  • Redis分片集群的實現

    Redis分片集群的實現

    Redis 分片集群是一種將 Redis數據庫分散到多個節(jié)點上的方式,以提供更高的性能和可伸縮性,本文主要介紹了Redis分片集群的實現,具有一定的參考價值,感興趣的可以了解一下
    2025-04-04
  • Redis如何解決BigKey

    Redis如何解決BigKey

    在Redis的使用過程中,我們經常會遇到BigKey, BigKey的大值會導致Redis內存中產生大量不連續(xù)的碎片,降低內存利用效率,本文主要介紹了Redis如何解決BigKey,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Ubuntu系統(tǒng)中Redis的安裝步驟及服務配置詳解

    Ubuntu系統(tǒng)中Redis的安裝步驟及服務配置詳解

    本文主要記錄了Ubuntu服務器中Redis服務的安裝使用,包括apt安裝和解壓縮編譯安裝兩種方式,并對安裝過程中可能出現的問題、解決方案進行說明,以及在手動安裝時,服務器如何添加自定義服務的問題,需要的朋友可以參考下
    2024-12-12
  • redis緩存存儲Session原理機制

    redis緩存存儲Session原理機制

    這篇文章主要為大家介紹了redis緩存存儲Session原理機制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-11-11
  • redis實現紅鎖的示例代碼

    redis實現紅鎖的示例代碼

    在分布式系統(tǒng)中,實現一個可靠的鎖機制是非常重要的,本文主要介紹了redis實現紅鎖的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2025-04-04
  • 一起raid數據恢復及回遷成功的案例

    一起raid數據恢復及回遷成功的案例

    這篇文章主要介紹了一起raid數據恢復及回遷成功的案例,需要的朋友可以參考下
    2017-04-04
  • 用Redis實現微博關注關系

    用Redis實現微博關注關系

    在微博中,每一個用戶都會有一個關注列表,一個粉絲列表。用戶可以查看自己的關注,粉絲列表,也可以查看別人的關注,粉絲列表。并且,要展示列表里每個人與當前查看者的關注狀態(tài)。
    2015-09-09
  • 關于Redis?bigkeys命令會阻塞問題的解決

    關于Redis?bigkeys命令會阻塞問題的解決

    這篇文章主要介紹了關于Redis?bigkeys命令會阻塞問題的解決,今天分享一次Redis引發(fā)的線上事故,避免再次踩雷,實現快速入門,需要的朋友可以參考下
    2023-03-03
  • Redis配置文件詳解

    Redis配置文件詳解

    這篇文章主要介紹了Redis配置文件詳解,本文詳細完整的用中文解釋了Redis配置文件中各種參數的作用和功能,需要的朋友可以參考下
    2015-04-04
  • Redis持久化解讀

    Redis持久化解讀

    Redis是一種內存級數據庫,提供高速讀寫性能,但數據易失,它支持三種持久化方式:RDB(快照持久化)、AOF(追加文件持久化)和混合持久化,RDB通過快照將數據保存到磁盤,AOF記錄所有寫操作命令,混合持久化結合兩者優(yōu)點
    2025-01-01

最新評論

曲松县| 宝山区| 三都| 新乡市| 义乌市| 德江县| 公主岭市| 洪泽县| 揭阳市| 呈贡县| 克东县| 永仁县| 沾益县| 岳阳县| 巴青县| 高雄市| 巴林右旗| 龙井市| 郎溪县| 凉山| 伊吾县| 宣威市| 玛曲县| 武鸣县| 周宁县| 万载县| 永城市| 广汉市| 南华县| 凤庆县| 灵台县| 错那县| 会东县| 宿州市| 巴林右旗| 土默特右旗| 广安市| 博野县| 女性| 普兰县| 信阳市|