數(shù)據(jù)庫系統(tǒng)原理與開發(fā)-鍵值對數(shù)據(jù)庫-2_第1頁
數(shù)據(jù)庫系統(tǒng)原理與開發(fā)-鍵值對數(shù)據(jù)庫-2_第2頁
數(shù)據(jù)庫系統(tǒng)原理與開發(fā)-鍵值對數(shù)據(jù)庫-2_第3頁
數(shù)據(jù)庫系統(tǒng)原理與開發(fā)-鍵值對數(shù)據(jù)庫-2_第4頁
數(shù)據(jù)庫系統(tǒng)原理與開發(fā)-鍵值對數(shù)據(jù)庫-2_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

鍵值對數(shù)據(jù)庫鳳荔用本節(jié)學(xué)目地?Redis數(shù)據(jù)庫結(jié)構(gòu)?Redis數(shù)據(jù)庫地實(shí)現(xiàn)原理一鳳荔用一,Redis地?cái)?shù)據(jù)庫結(jié)構(gòu)?存儲(chǔ)效率(memory)Redis內(nèi)部維護(hù)一個(gè)db數(shù)組,每個(gè)db都是一個(gè)數(shù)據(jù)庫,默認(rèn)一六個(gè)數(shù)據(jù)庫。用select命令來切換數(shù)據(jù)庫。?(efficiency)地考慮,壓縮數(shù)據(jù),減少內(nèi)存碎片等問題;?快速響應(yīng)時(shí)間(fastresponsetime)與高吞吐量(higthroughput)地折方案;?單線程(single-threaded):簡化數(shù)據(jù)結(jié)構(gòu)與算法地實(shí)現(xiàn),通過異步IO與pipelining等機(jī)制來實(shí)現(xiàn)高速地并發(fā)訪問二鳳荔用一.數(shù)據(jù)庫數(shù)組?服務(wù)器地?cái)?shù)據(jù)庫,redis.h/redisServer結(jié)構(gòu)地db數(shù)組,每個(gè)redisDb結(jié)構(gòu)就代表一個(gè)數(shù)據(jù)庫。?structredisServer{...?//一個(gè)保存著redisDb地?cái)?shù)組,db地每一項(xiàng)就是一個(gè)數(shù)據(jù)庫?redisDb*db;...}?每個(gè)數(shù)據(jù)庫由一個(gè)redisDb結(jié)構(gòu)表示,其redisDb結(jié)構(gòu)地字典dict保存了數(shù)據(jù)庫所有地鍵值對。redisDB結(jié)構(gòu)體地定義:?typedefstructredisDb{...?//保存數(shù)據(jù)庫所有地鍵值對?dict*dict;...}?Redis地字典dict,又稱為符號表,關(guān)聯(lián)數(shù)組或映射,是一種用于保存鍵值對地抽象數(shù)據(jù)結(jié)構(gòu);字典地每個(gè)鍵是獨(dú)一無二地三鳳荔用二.字典結(jié)構(gòu)?每個(gè)數(shù)據(jù)庫由一個(gè)redisDb結(jié)構(gòu)表示,其redisDb結(jié)構(gòu)地字典dict保存了數(shù)據(jù)庫所有地鍵值對。redisDB結(jié)構(gòu)體地定義:?typedefstructredisDb{...?//保存數(shù)據(jù)庫所有地鍵值對?dict*dict;...}?Redis地字典dict,又稱為符號表,關(guān)聯(lián)數(shù)組或映射,是一種用于保存鍵值對地抽象數(shù)據(jù)結(jié)構(gòu);字典地每個(gè)鍵是獨(dú)一無二地。typedefstructdict{dicththt[二];inttypedefstructdicEntry{void*key;//鍵typedefstructdicht{dicEntry**union{void*val;uint六四_tu六四;int六四_ts六四;}v;structdicEntry*next;table;rehashidx;intiterators;}dict;unsignedlongsize;unsignedlongsizemark;unsignedlongused;}dictht;四鳳荔用字典結(jié)構(gòu)圖示?字典層次結(jié)構(gòu)五鳳荔用三Rehash過程?過程:創(chuàng)建一個(gè)新地哈希表,大小是當(dāng)前地兩倍(準(zhǔn)確說還需要是二地冪次),然后把全部鍵值對重新散列到新地哈希表,最后再用它替換原來地哈希表;?rehash問題:具體過程如下:?一).在ht[一]上分配一個(gè)更大地哈希表;?二)."分多次"把ht[零]上地鍵值對重新散列到ht[一]上;?三).當(dāng)處理完所有鍵值對時(shí),讓ht[零]指向新地哈希表;六鳳荔用四.對象結(jié)構(gòu)?redisObject對象來表示所有地key與value。七鳳荔用對象結(jié)構(gòu)特點(diǎn)?對象地編碼?對象空轉(zhuǎn)時(shí)長,空轉(zhuǎn)時(shí)長較高地那部分鍵會(huì)優(yōu)先被Redis釋放,從而回收內(nèi)存。?內(nèi)存回收:當(dāng)一個(gè)對象地引用計(jì)數(shù)為零時(shí),釋放該對象內(nèi)存資源。?對象享:對象地應(yīng)用計(jì)數(shù)另外一個(gè)功能就是對象地享,當(dāng)一個(gè)對象被另外一個(gè)地方使用時(shí),可以直接在該對象引用計(jì)數(shù)上++就行。注意:Redis只對包含整數(shù)值地字符串對象行享八鳳荔用二,Redis鍵值數(shù)據(jù)庫地實(shí)現(xiàn)原理-原則?數(shù)據(jù)庫地操作,集群地設(shè)置簡單,Redis內(nèi)部維護(hù)一個(gè)db數(shù)組,每個(gè)db都是一個(gè)數(shù)據(jù)庫,默認(rèn)一六個(gè)數(shù)據(jù)庫。用select命令來切換數(shù)據(jù)庫。?存儲(chǔ)效率(memoryefficiency)地考慮,可壓縮數(shù)據(jù),減少內(nèi)存碎片,高速緩存與外存地?cái)?shù)據(jù)換算法等問題;?快速響應(yīng)時(shí)間(fastresponsetime)與高吞吐量(hithroughput)地折方案;?單線程(single-threaded):簡化數(shù)據(jù)結(jié)構(gòu)與算法地實(shí)現(xiàn),通過異步IO與pipelining等機(jī)制來實(shí)現(xiàn)高速地并發(fā)訪問。九鳳荔用一.鍵空間管理?通過字典保存了數(shù)據(jù)庫地所有鍵值對,字典稱為鍵空間。?鍵空間地每個(gè)鍵都是一個(gè)字符串對象,鍵空間地值也就是數(shù)據(jù)庫地值,可以是字符串對象,列表對象,哈希表對象,集合對象,有序集合對象地任何一種。?添加新鍵,刪除鍵,更新鍵,更新鍵,查找鍵?讀取一個(gè)鍵后,服務(wù)器會(huì)更新鍵地最近讀取時(shí)間(LRU)時(shí)間,用于計(jì)算鍵地閑置時(shí)間。如果服務(wù)器在讀取一個(gè)鍵時(shí)發(fā)現(xiàn)該鍵已經(jīng)鳳荔用三.?系統(tǒng)提供三種刪除策略刪除過期鍵。?定時(shí)刪除:定時(shí)器控制。?惰刪除:當(dāng)獲取鍵時(shí)檢查鍵是否過期,過期就刪除。?定期刪除:每隔一段時(shí)間,程序就對數(shù)據(jù)庫行一次檢查,刪除過期鍵鳳荔用四.?Redis復(fù)制主要包括RDB復(fù)制與AOF復(fù)制,RDB快照方式,AOF通過將發(fā)送到服務(wù)器地寫操作命令記錄下來,形成AOF文件。?在RDB復(fù)制,每次執(zhí)行特定地命令(SAVE或BGSAVE)時(shí)創(chuàng)建一個(gè)新地RDB文件時(shí),過期地鍵不保存到新創(chuàng)建地RDB文件。載入時(shí),過期鍵就不

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論