建設(shè)銀行卡授權(quán)網(wǎng)站管理今日疫情實(shí)時數(shù)據(jù)
Redis怎么儲存的
?這個redisDb是數(shù)據(jù)庫對象?里面的其他字段忽略了?然后里面有個dict列表(字典列表)
我們隨便來看一個redisObject
?區(qū)分一下子啊?他這個dict里面沒有存redisObject的對象?也沒有存dict對象?它只是存了個數(shù)據(jù)指針
你看那個redis每個底層編碼?摳搜的?這塊要是再保存一份都浪費(fèi)回去了
過期鍵
Redis數(shù)據(jù)都可以設(shè)置過期鍵,這樣到了一定的時間,這些對象就會自動過期并回收。這些過期鍵沒有和一般鍵存放在一起
錯誤的:啊?這存的也是指針?這個dict和expires里面存的都是key?都是同一份數(shù)據(jù)?雖然畫是這么畫的但實(shí)際上兩個dict的key都能找時間戳和value(通過指針)?
這兩個dict里面存的是key對象的指針(也就是String對象的指針)? value一個是任意對象?一個是timestamp?這個key是會在兩個dict復(fù)用的?所以直接用指針
我們之前說的對象雖然有的是key-value結(jié)構(gòu)?但是不代表這里的key-value結(jié)構(gòu)是一個對象?這里的key是一個string對象?value又是一個對象??
SET a b,這個數(shù)據(jù)的存儲結(jié)構(gòu)是怎樣的?
Redis儲存引擎里面有一個dict?把a(bǔ)放在對應(yīng)偏移量上?然后再把b作為它的對應(yīng)value儲存
SET a 100 ex 60之后,調(diào)用TTL a,此時這個過期信息是存儲在哪里的?
直接把這個key對象指針 放到expires里面?然后再把時間戳作為value塞進(jìn)去?