新聞中心
Redis(Remote Dictionary Server)是一個(gè)開(kāi)源的高性能內(nèi)存鍵值對(duì)KV(KEY-value)數(shù)據(jù)庫(kù),在去中心化,高可用性和高性能方面都具有出色的表現(xiàn)。本文主要介紹Redis如何通過(guò)key獲取value的實(shí)現(xiàn)方式。

當(dāng)用戶調(diào)用GET命令時(shí),Redis內(nèi)部程序會(huì)將鍵作為參數(shù),查找給定的鍵是否在內(nèi)存Dataset中,可以使用以下代碼:
// 查詢數(shù)據(jù)庫(kù)是否存在給定的鍵:
db->dictFind(db->dict, key);
如果給定的鍵存在,則Redis會(huì)返回與鍵相關(guān)聯(lián)的值,該值可以是字符串、數(shù)字或者是嵌套對(duì)象:
// 返回鍵關(guān)聯(lián)的值
sds val = key->value;
// 返回?cái)?shù)字
long long num = key->value;
// 返回嵌套對(duì)象
robj *valobj = key->value;
如果在Dataset中沒(méi)有找到給定的鍵,程序會(huì)繼續(xù)查詢離線數(shù)據(jù)庫(kù)(即經(jīng)過(guò)持久化處理的數(shù)據(jù)),以確定是否存在該鍵,如果存在,Redis將恢復(fù)該鍵和其關(guān)聯(lián)的值,以及其他相關(guān)信息,之后將數(shù)據(jù)恢復(fù)到Dataset中,以供以后使用:
// 查詢持久化離線存儲(chǔ)中是否存在給定的鍵:
rdbLoad(key);
// 恢復(fù)鍵的關(guān)聯(lián)值:
key->value=rdbLoad(val);
// 恢復(fù)相關(guān)信息:
updateExpireTime(key);
//
// 把數(shù)據(jù)恢復(fù)到Dataset中
db->dictAdd(db->dict, key, val);
Redis通過(guò)key獲取value的實(shí)現(xiàn)過(guò)程包括查詢Dataset中是否存在給定的key,如果存在則返回與key相關(guān)聯(lián)的值,如果不存在則查詢離線數(shù)據(jù)庫(kù),恢復(fù)相應(yīng)數(shù)據(jù),然后把數(shù)據(jù)恢復(fù)到Dataset中,以供以后使用。
香港云服務(wù)器機(jī)房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
分享標(biāo)題:通過(guò)Redis值獲取健的實(shí)現(xiàn)方式(redis通過(guò)值獲取健)
文章URL:http://www.dlmjj.cn/article/djcepoh.html


咨詢
建站咨詢
