




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、7.3 鍵值對數(shù)據(jù)庫Redis數(shù)據(jù)庫結(jié)構(gòu)Redis數(shù)據(jù)庫的實(shí)現(xiàn)原理【本節(jié)學(xué)習(xí)目標(biāo)】一、Redis的數(shù)據(jù)庫結(jié)構(gòu)存儲效率(memory) Redis內(nèi)部維護(hù)一個db數(shù)組,每個db都是一個數(shù)據(jù)庫,默認(rèn)16個數(shù)據(jù)庫。用select命令來切換數(shù)據(jù)庫。(efficiency)的考慮,壓縮數(shù)據(jù)、減少內(nèi)存碎片等問題; 快速響應(yīng)時間(fast response time)與高吞吐量(high throughput)的折中方案; 單線程(single-threaded): 簡化數(shù)據(jù)結(jié)構(gòu)和算法的實(shí)現(xiàn),通過異步IO和pipelining等機(jī)制來實(shí)現(xiàn)高速的并發(fā)訪問1. 數(shù)據(jù)庫數(shù)組服務(wù)器中的數(shù)據(jù)庫,redis.h/red
2、isServer結(jié)構(gòu)的db數(shù)組中,每個redisDb結(jié)構(gòu)就代表一個數(shù)據(jù)庫。struct redisServer . / 一個保存著redisDb的數(shù)組,db中的每一項(xiàng)就是一個數(shù)據(jù)庫 redisDb *db; . 每個數(shù)據(jù)庫由一個redisDb結(jié)構(gòu)表示,其中redisDb結(jié)構(gòu)中的字典dict保存了數(shù)據(jù)庫中所有的鍵值對。 redisDB結(jié)構(gòu)體的定義:typedef struct redisDb . /保存數(shù)據(jù)庫中所有的鍵值對 dict *dict; .Redis中的字典dict, 又稱為符號表、關(guān)聯(lián)數(shù)組或映射,是一種用于保存鍵值對的抽象數(shù)據(jù)結(jié)構(gòu); 字典中的每個鍵是獨(dú)一無二的2. 字典結(jié)構(gòu)每個數(shù)據(jù)庫
3、由一個redisDb結(jié)構(gòu)表示,其中redisDb結(jié)構(gòu)中的字典dict保存了數(shù)據(jù)庫中所有的鍵值對。 redisDB結(jié)構(gòu)體的定義:typedef struct redisDb . /保存數(shù)據(jù)庫中所有的鍵值對 dict *dict; .Redis中的字典dict, 又稱為符號表、關(guān)聯(lián)數(shù)組或映射,是一種用于保存鍵值對的抽象數(shù)據(jù)結(jié)構(gòu); 字典中的每個鍵是獨(dú)一無二的。typedef struct dict dictht ht2; int rehashidx; int iterators; dict; typedef struct dicht dicEntry * table; unsigned long s
4、ize; unsigned long sizemark; unsigned long used; dictht;typedef struct dicEntry void *key; / 鍵 union void *val; uint64_tu64; int64_ts64; v; struct dicEntry *next; dictEntry;字典結(jié)構(gòu)圖示字典層次結(jié)構(gòu)3 Rehash過程過程:創(chuàng)建一個新的哈希表,大小是當(dāng)前的兩倍(準(zhǔn)確說還必須是2的冪次),然后把全部鍵值對重新散列到新的哈希表中,最后再用它替換原來的哈希表;rehash問題:具體過程如下:1). 在ht1上分配一個更大的哈希表;
5、2). “分多次”把ht0上的鍵值對重新散列到ht1上;3). 當(dāng)處理完所有鍵值對時,讓ht0指向新的哈希表;4. 對象結(jié)構(gòu)redisObject對象來表示所有的key和value。對象結(jié)構(gòu)特點(diǎn)對象的編碼對象空轉(zhuǎn)時長, 空轉(zhuǎn)時長較高的那部分鍵會優(yōu)先被Redis釋放,從而回收內(nèi)存。內(nèi)存回收: 當(dāng)一個對象的引用計數(shù)為0時,釋放該對象內(nèi)存資源。對象共享: 對象的應(yīng)用計數(shù)另外一個功能就是對象的共享,當(dāng)一個對象被另外一個地方使用時,可以直接在該對象引用計數(shù)上+就行。注意:Redis只對包含整數(shù)值的字符串對象進(jìn)行共享二、Redis鍵值數(shù)據(jù)庫的實(shí)現(xiàn)原理-原則數(shù)據(jù)庫的操作、集群的設(shè)置簡單, Redis內(nèi)部維護(hù)
6、一個db數(shù)組,每個db都是一個數(shù)據(jù)庫,默認(rèn)16個數(shù)據(jù)庫。用select命令來切換數(shù)據(jù)庫。存儲效率(memory efficiency)的考慮,可壓縮數(shù)據(jù)、減少內(nèi)存碎片、高速緩存和外存的數(shù)據(jù)交換算法等問題;快速響應(yīng)時間(fast response time)與高吞吐量(high throughput)的折中方案;單線程(single-threaded): 簡化數(shù)據(jù)結(jié)構(gòu)和算法的實(shí)現(xiàn),通過異步IO和pipelining等機(jī)制來實(shí)現(xiàn)高速的并發(fā)訪問。 1. 鍵空間管理通過字典保存了數(shù)據(jù)庫中的所有鍵值對,字典稱為鍵空間。鍵空間的每個鍵都是一個字符串對象,鍵空間的值也就是數(shù)據(jù)庫的值,可以是字符串對象,列表對
7、象,哈希表對象,集合對象,有序集合對象中的任何一種。添加新鍵、刪除鍵、更新鍵、更新鍵、查找鍵讀取一個鍵后,服務(wù)器會更新鍵的最近讀取時間(LRU)時間,用于計算鍵的閑置時間。如果服務(wù)器在讀取一個鍵時發(fā)現(xiàn)該鍵已經(jīng)2. 設(shè)置生存時間和過期時間用expire命令或者pexpire命令可以對一個鍵設(shè)置生存時間, 自動刪除生存時間為0的鍵。四個命令expire, pexpire, expireat, pexpireat。過期字典記錄所有帶過期時間的鍵程序可以通過過期字典檢查一個給定鍵是否過期,檢查給定鍵是否存在有過期字典并對該鍵是否過期進(jìn)行判斷3. 過期鍵刪除策略系統(tǒng)提供三種刪除策略刪除過期鍵。 定時刪除: 定時器控制。惰性刪除:當(dāng)獲取鍵時檢查鍵是否過期,過期就刪除。定期刪除:每隔一段時間,程序就對數(shù)據(jù)庫進(jìn)行一次檢查,刪除過期鍵4. 復(fù)制功能 Redis復(fù)制主要包括RDB復(fù)制和AOF復(fù)制,RDB快照方式,AOF通過將發(fā)送到服務(wù)器的寫操作命令記錄下來,形成AOF文件。在RDB復(fù)制中,每次執(zhí)行特定的命令(SAVE或BGSAVE)時創(chuàng)建一個新的RDB文件時,過期的鍵不保存到新創(chuàng)建的R
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 制硫璃瓦行業(yè)深度研究分析報告(2024-2030版)
- 鋰電池及正極材料生產(chǎn)項(xiàng)目可行性實(shí)施報告
- 2021-2026年中國綠色蔬菜市場運(yùn)營態(tài)勢及發(fā)展前景預(yù)測報告
- 2025年 紅河州紅河縣人民檢察院招聘聘用制書記員附答案
- 2025年 廣東省塔式起重機(jī)操作證理論考試練習(xí)題附答案
- 中國家用物聯(lián)網(wǎng)行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略研究報告
- 2025年智能電網(wǎng)成套設(shè)備項(xiàng)目綜合評估報告
- 中國無線路由器行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 四川垃圾箱項(xiàng)目投資分析報告參考范文
- 聚氨酯粘合劑項(xiàng)目投資價值分析報告
- 岐山縣南灣水泥用灰?guī)r礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 反違章安全教育講義
- 2023-2024學(xué)年江蘇省張家港市小學(xué)語文五年級期末高分模擬題附參考答案和詳細(xì)解析
- 醫(yī)院創(chuàng)建二甲醫(yī)院工作實(shí)施方案
- 城市管理學(xué)PPT完整全套教學(xué)課件
- 人教版三年級語文下冊八個單元作文寫作范文
- 陶土板施工技術(shù)交底
- 分子生物學(xué)知到章節(jié)答案智慧樹2023年湖南科技大學(xué)
- 《園藝產(chǎn)品貯藏與加工》考試題庫大全(附答案)
- 義務(wù)教育歷史課程標(biāo)準(zhǔn)(2022年版)
- 消防行業(yè)特有工種職業(yè)技能鑒定申報登記表參考模板范本
評論
0/150
提交評論