好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > redis數據庫查找key在內存中的位置的方法

redis數據庫查找key在內存中的位置的方法

熱門標簽:硅基電話機器人官網 美國地圖標注軟件下載 電話機器人怎么看余額 城市地圖標志怎么標注 漯河電銷回撥外呼系統 長沙外呼系統平臺 怎么修改高德地圖標注 西安電話自動外呼系統 合肥crm外呼系統加盟

一、預先需要了解的知識
1、redis 中的每一個數據庫,都由一個 redisDb 的結構存儲。其中,redisDb.id 存儲著 redis 數據庫以整數表示的號碼。redisDb.dict 存儲著該庫所有的鍵值對數據。redisDb.expires 保存著每一個鍵的過期時間。
2、當redis 服務器初始化時,會預先分配 16 個數據庫(該數量可以通過配置文件配置),所有數據庫保存到結構 redisServer 的一個成員 redisServer.db 數組中。當我們選擇數據庫 select number  時,程序直接通過 redisServer.db[number] 來切換數據庫。有時候當程序需要知道自己是在哪個數據庫時,直接讀取 redisDb.id 即可。
3、既然我們知道一個數據庫的所有鍵值都存儲在redisDb.dict中,那么我們要知道如果找到key的位置,就有必要了解一下dict 的結構了:

復制代碼 代碼如下:
typedef struct dict {

// 特定于類型的處理函數
dictType *type;

// 類型處理函數的私有數據
void *privdata;

// 哈希表(2個)
dictht ht[2];

// 記錄 rehash 進度的標志,值為-1 表示 rehash 未進行
int rehashidx;

// 當前正在運作的安全迭代器數量
int iterators;
} dict;


由上述的結構可以看出,redis 的字典使用哈希表作為其底層實現。dict 類型使用的兩個指向哈希表的指針,其中 0 號哈希表(ht[0])主要用于存儲數據庫的所有鍵值,而1號哈希表主要用于程序對 0 號哈希表進行 rehash 時使用,rehash 一般是在添加新值時會觸發,這里不做過多的贅述。所以redis 中查找一個key,其實就是對進行該dict 結構中的 ht[0] 進行查找操作。
4、既然是哈希,那么我們知道就會有哈希碰撞,那么當多個鍵哈希之后為同一個值怎么辦呢?redis采取鏈表的方式來存儲多個哈希碰撞的鍵。也就是說,當根據key的哈希值找到該列表后,如果列表的長度大于1,那么我們需要遍歷該鏈表來找到我們所查找的key。當然,一般情況下鏈表長度都為是1,所以時間復雜度可看作o(1)。
二、當redis 拿到一個key 時,如果找到該key的位置。
了解了上述知識之后,我們就可以來分析redis如果在內存找到一個key了。
1、當拿到一個key后, redis 先判斷當前庫的0號哈希表是否為空,即:if (dict->ht[0].size == 0)。如果為true直接返回NULL。
2、判斷該0號哈希表是否需要rehash,因為如果在進行rehash,那么兩個表中者有可能存儲該key。如果正在進行rehash,將調用一次_dictRehashStep方法,_dictRehashStep 用于對數據庫字典、以及哈希鍵的字典進行被動 rehash,這里不作贅述。
3、計算哈希表,根據當前字典與key進行哈希值的計算。
4、根據哈希值與當前字典計算哈希表的索引值。
5、根據索引值在哈希表中取出鏈表,遍歷該鏈表找到key的位置。一般情況,該鏈表長度為1。
6、當 ht[0] 查找完了之后,再進行了次rehash判斷,如果未在rehashing,則直接結束,否則對ht[1]重復345步驟。
到此我們就找到了key在內存的中位置了。

您可能感興趣的文章:
  • 淺談redis內存數據的持久化方式
  • 內存型數據庫Redis持久化小結
  • spring結合redis如何實現數據的緩存
  • Redis為什么要存兩次數據

標簽:吉林 商洛 廣西 玉溪 撫順 文山 瀘州 濟源

巨人網絡通訊聲明:本文標題《redis數據庫查找key在內存中的位置的方法》,本文關鍵詞  redis,數據庫,查找,key,在,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《redis數據庫查找key在內存中的位置的方法》相關的同類信息!
  • 本頁收集關于redis數據庫查找key在內存中的位置的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 啊啊啊轻点啊| 亚洲五月综合自拍区| 麻豆极品JK丝袜自慰喷水久久 | videos丝袜| 国产亚洲精品v| 牝教师~淫辱の教室动漫2| 欧美激情teenvideo| 粗暴蹂躏嫩苞惨叫哭喊视频| 99国精产品一区二区三区A片| 欧美gay无套粗大| 卡戴珊20分钟大尺度在线播放| 插鸡小说| 英语课上强插英语课代表网站| 在线黄色小说| 亂倫近親相姦中文字幕完整片| 欧美一级A片在线观看| 99久久精品免费看国产免费| 我和漂亮岳的性经历全文| 乱H高H继NP| 伊人久久久人综合网站| 邪恶绅士??邪恶天堂acg | 美女学生与洋助教群啪| 男男互攻互受H啪肉Np| 男人扒开女人添下边| 男人j进女的屁股视频网站| 布拉芙夫人在线看| 局长含了一整晚我的奶头| Free???性欧美AV按摩| 欧美卡2卡4卡无卡免费| 美女裸体秘?无遮挡屁股| mm131美女久久精品美女图片| 有毛片**毛片毛片毛片| 国模浓密大尺度| 美女黄色在线观看| 欧美色视频日本片免费| 免费无码一区二区三区四区五区| 性久久久久久久久久久| 欧亚专线欧洲在线| 朋友的丰满人妻HD中文| 欧美色99| 我们做吧我等不及了小视频下载|