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

了解redis中RDB結(jié)構(gòu)_動力節(jié)點Java學院整理

 更新時間:2017年08月29日 10:24:17   作者:huangxincheng  
這篇文章主要為大家詳細介紹了redis中RDB結(jié)構(gòu),具有一定的參考價值,感興趣的小伙伴們可以參考一下

RDB文件是在redis的“快照”的模式下才會產(chǎn)生,那么如果我們理解了RDB文件的結(jié)構(gòu),是不是讓我們對“快照”模式能做到一個心中有數(shù)呢???

一、RDB結(jié)構(gòu)剖析

  首先呢,我們要對RDB文件有一個概念性的認識,比如下面畫的圖一樣:

從圖中,我們大概看到了RDB文件的一個簡要的存儲模式,但為了更好的方便對照,我準備save一個empty database,對比一下看看效果:

然后我們用winHex打開dump.rdb文件,看看它的16進制。

好了,該打開的我都打開了,下面我們一一來比較一下。

1. Redis參數(shù): 可以看到在16進制的前5個字節(jié)中,是“REDIS"五個大字母,這個的作用顯而易見,肯定就是判斷當前的文件是否為“RDB文件“,這樣才方便用常量的時間來判別。。。

2. db_version: 在Redis字符之后,我們看到了占用4個字節(jié)的0006,這個就是RDB文件結(jié)構(gòu)圖中的 db_version。對吧,同樣也很簡單,就是判斷當前Redis的版本號,對否???

3. database: 由于我演示的是一個empty database,自然沒有相應(yīng)的結(jié)構(gòu),等下我們再插入記錄,再對比一下。

4. EOF: 從winHex上面你是否看到了,它占用一個字節(jié)的空間,就是一個“y”上面加了兩點,由于用unicode無法表示,所以出現(xiàn)了這么個亂碼,當然16進制可以標識,就是所謂的“FF”,看到了沒有??? 那么它的作用就是標識database的結(jié)束。

5. checksum: 從名字上你就可以看得到,它就是一個校驗和,原理當然就是看文件是否損壞,或者是否被修改,這樣有點像現(xiàn)在的OAuth驗證,對吧,它占用了8個字節(jié),也就是最后的:DC B3 43 F0 5A DC F2 56。。。

二、帶數(shù)據(jù)的RDB文件結(jié)構(gòu)演示

好了,上面我已經(jīng)演示了除Database之外的所有參數(shù),下面我們來set一個最簡單的string類型,看看database結(jié)構(gòu)是否如圖所示。

用WinHex打開dump.rdb文件如下:

為了方便對照,我在圖中標記了一下Database開始的位置,也就是十六進制的 FE。。。

1. database [selectDB]: 可以看到,selectDB其實就是一個無法用unicode標記出來的一個字節(jié),十六進制就是FE,當redis碰到這個字符的時候就知道自己該干嘛了。。。。要準備執(zhí)行select命令了。。。

2. database[db_number]: 在FE之后,我們看到了十六進制的 ”03“,也就是切換到第三個數(shù)據(jù)庫中,還記得嗎? 我之前在set數(shù)據(jù)的時候,曾今執(zhí)行過select 3,也就是將數(shù)據(jù)set到第3號數(shù)據(jù)庫中,如果你忘記了,沒關(guān)系,我用redis客戶端打開給你看~~

3. database[pairs][type]: 當你知道select哪一號數(shù)據(jù)庫之后,接下來的操作就是怎么去分析key,value數(shù)據(jù)了,在key/value數(shù)據(jù)中,第一個就是type,其實這個type就是你的value的encoding類型,可以看到在winHex中表示的0,也就是以下的源碼:

4.database[pairs][key][len]: 在type之后,就是所謂的key,而key的組合模式是【len,value】,其中l(wèi)en就是key的長度,你也可以看到,winHex中表示的是 “04”,也就是說name的長度為4。對吧。。。

5.database[pairs][key][value] 同樣的道理,這里的模式也是【len,value】,前面為value的length,后面為value的具體值。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于Redis的主從復(fù)制及哨兵問題

    關(guān)于Redis的主從復(fù)制及哨兵問題

    redis中以master為主機,slave為從機,一個master可以對應(yīng)多個slave,而一個slave只能對應(yīng)一個master,這篇文章主要介紹了Redis的主從復(fù)制及哨兵,需要的朋友可以參考下
    2022-06-06
  • Redis GEO實現(xiàn)附近搜索功能

    Redis GEO實現(xiàn)附近搜索功能

    這篇文章主要介紹了Redis GEO實現(xiàn)附近搜索功能,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2024-12-12
  • 利用yum安裝Redis的方法詳解

    利用yum安裝Redis的方法詳解

    Redis是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。從2010年3月15日起,Redis的開發(fā)工作由VMware主持。這篇文章主要介紹的是利用yum安裝Redis的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧
    2016-11-11
  • redis樂觀鎖與悲觀鎖的實戰(zhàn)?

    redis樂觀鎖與悲觀鎖的實戰(zhàn)?

    Redis提供了兩種鎖機制,即樂觀鎖和悲觀鎖。本文主要介紹了redis樂觀鎖與悲觀鎖的實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 如何高效使用Redis作為LRU緩存

    如何高效使用Redis作為LRU緩存

    這篇文章主要介紹了如何高效使用Redis作為LRU緩存,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 關(guān)于Redis單線程的正確理解

    關(guān)于Redis單線程的正確理解

    很多同學對Redis的單線程和I/O多路復(fù)用技術(shù)并不是很了解,所以我用簡單易懂的語言讓大家了解下Redis單線程和I/O多路復(fù)用技術(shù)的原理,對學好和運用好Redis打下基礎(chǔ),感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Redis異常測試盤點分析

    Redis異常測試盤點分析

    這篇文章主要為大家介紹了Redis異常測試盤點分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Redis緩存問題與緩存更新機制詳解

    Redis緩存問題與緩存更新機制詳解

    本文主要介紹了緩存問題及其解決方案,包括緩存穿透、緩存擊穿、緩存雪崩等問題的成因以及相應(yīng)的預(yù)防和解決方法,同時,還詳細探討了緩存更新機制,包括不同情況下的緩存更新策略和內(nèi)存淘汰機制,并對比了它們的優(yōu)缺點
    2025-01-01
  • 詳解Redis中的簡單動態(tài)字符串和C字符串的區(qū)別

    詳解Redis中的簡單動態(tài)字符串和C字符串的區(qū)別

    簡單動態(tài)字符串(SDS)和?C?字符串在實現(xiàn)和特性上存在一些區(qū)別,這些區(qū)別使得?SDS?更適合作為?Redis?中字符串對象的內(nèi)部表示,本文給大家介紹一下Redis中的簡單動態(tài)字符串和C字符串的區(qū)別,需要的朋友可以參考下
    2023-12-12
  • 無法啟動Redis打開redis-server閃退的問題解決辦法

    無法啟動Redis打開redis-server閃退的問題解決辦法

    正常開啟redis服務(wù),首先要啟動redis-server.exe,但是閃退,導致無法開啟redis服務(wù),這篇文章主要給大家介紹了關(guān)于無法啟動Redis打開redis-server閃退問題的解決辦法,需要的朋友可以參考下
    2024-07-07

最新評論

泰州市| 江口县| 京山县| 比如县| 大方县| 唐海县| 醴陵市| 达拉特旗| 家居| 扎鲁特旗| 自贡市| 鹤庆县| 绥阳县| 汕头市| 绥江县| 齐齐哈尔市| 宜君县| 新沂市| 重庆市| 宿州市| 大田县| 海阳市| 贵溪市| 湖南省| 竹北市| 黑龙江省| 泗洪县| 盐城市| 彰武县| 多伦县| 大名县| 阿克苏市| 东乌| 林甸县| 内丘县| 伽师县| 河津市| 牡丹江市| 盘山县| 镇坪县| 阿图什市|