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

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


咨詢
建站咨詢
