redis(8)數(shù)據(jù)庫

1、redis服務(wù)器中的數(shù)據(jù)庫,都保存在服務(wù)器狀態(tài)redisserver結(jié)構(gòu)的db數(shù)組中,每一個(gè)項(xiàng)都是redisdb

dbnum : 服務(wù)器數(shù)據(jù)庫數(shù)量,默認(rèn)創(chuàng)建16個(gè)數(shù)據(jù)庫

2、切換數(shù)據(jù)庫

redisclient 保存著數(shù)據(jù)庫的指針 select 2 ,切換到下標(biāo)為2的數(shù)據(jù)庫,通過修改Redisclient.db指針實(shí)現(xiàn)

3、數(shù)據(jù)庫鍵空間

redisdb結(jié)構(gòu)的dict字典保存了數(shù)據(jù)庫中的所有鍵值對(duì),將這個(gè)字典稱為鍵空間(key space)

鍵空間中的鍵是一個(gè)字符串對(duì)象,值可以是字符串對(duì)象,列表對(duì)象,hash對(duì)象,集合對(duì)象,有序集合對(duì)象任意一種redis對(duì)象

3.1、redis支持 添加新鍵,刪除鍵,對(duì)鍵取值,清空數(shù)據(jù)庫

4、讀寫鍵空間時(shí)的維護(hù)

讀取一個(gè)鍵后,服務(wù)器會(huì)根據(jù)鍵是否存在來更新服務(wù)器鍵空間命中(hit)次數(shù)或鍵空間不命中(miss)次數(shù),值可以通過info stats 命令查詢keyspace_hits 屬性和keyspace_misses屬性

讀取后悔更新lru,最后一次使用時(shí)間,這個(gè)值可以用于計(jì)算鍵的空置時(shí)間,使用objectidletime key來查看key閑置時(shí)間

如果服務(wù)器讀取一個(gè)鍵時(shí)發(fā)現(xiàn)該鍵過期,會(huì)先刪除這個(gè)過期鍵,然后執(zhí)行余下操作

如果客戶端使用watch命令監(jiān)視了某個(gè)鍵,那么服務(wù)器被監(jiān)視的鍵修改之后,會(huì)將這個(gè)鍵標(biāo)記為臟,從而讓事務(wù)程序注意到已經(jīng)被修改,每次修改,都會(huì)對(duì)臟鍵計(jì)數(shù)器增1

5、設(shè)置鍵的生存時(shí)間或過期時(shí)間 expire pexpire expireat pexpireat

5.1、保存過期時(shí)間,redisdb結(jié)構(gòu)的expires字典保存了數(shù)據(jù)庫中所有鍵的過期時(shí)間,我們稱為字典的過期字典,鍵是一個(gè)指針,指向鍵空間中某個(gè)鍵對(duì)象,值是一個(gè)long類型整數(shù),保存了鍵所指向的數(shù)據(jù)庫的過期時(shí)間

6、移除過期時(shí)間 persist

7、過期鍵刪除

定時(shí)刪除,設(shè)置過期時(shí)間同時(shí),創(chuàng)建一個(gè)定時(shí)器,讓定時(shí)器在鍵的過期時(shí)間來臨時(shí),刪除鍵,主動(dòng)刪除,耗CPU,節(jié)省內(nèi)存

惰性刪除,放任鍵過期不管,但是每次從鍵空間中獲取時(shí),都檢查取得的鍵是否過期,如果過期就刪除該鍵,如果沒有過期,就返回該鍵,被動(dòng)刪除,耗內(nèi)存,省CPU

定期刪除:每個(gè)一段時(shí)間,就對(duì)數(shù)據(jù)庫進(jìn)行一次檢查,刪除里面的過期鍵,至于刪除多少個(gè)數(shù)據(jù)庫,則由算法決定 ,需要合理設(shè)置執(zhí)行時(shí)長和執(zhí)行頻率

可以配合使用第一種和第二種

8、aof rdb 和復(fù)制功能對(duì)過期鍵的處理

執(zhí)行save或者bgsave命令創(chuàng)建一個(gè)新的rdb文件時(shí),程序會(huì)對(duì)數(shù)據(jù)庫中的鍵進(jìn)行檢查,已過期鍵不會(huì)被保存到rdb文件中

當(dāng)啟動(dòng)redis服務(wù)器時(shí)候,如果開啟了rdb功能,,服務(wù)器將載入rdb文件

當(dāng)服務(wù)器以aof持久化模式運(yùn)行,某個(gè)過期鍵被刪除,aof文件會(huì)追加(append)一條del命令,來顯式地記錄該鍵已被刪除

復(fù)制

主服務(wù)器命令會(huì)同步到從服務(wù)器

9、數(shù)據(jù)庫通知

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 9.1 服務(wù)器中的數(shù)據(jù)庫 Redis服務(wù)器將所有的數(shù)據(jù)庫都保存在服務(wù)器狀態(tài)redis.h/redisServer結(jié)...
    豬大金閱讀 405評(píng)論 0 0
  • 主要內(nèi)容 1.服務(wù)器保存數(shù)據(jù)庫的方法 2.客戶端切換數(shù)據(jù)庫的方法 3.數(shù)據(jù)庫保存鍵值對(duì)的方法 4.針對(duì)數(shù)據(jù)庫保存增...
    Felicia1993閱讀 374評(píng)論 0 0
  • 1.Redis特性 1)速度快:數(shù)據(jù)存放在內(nèi)存上、基于C語言實(shí)現(xiàn)、單線程架構(gòu)預(yù)防多線程競(jìng)爭(zhēng)問題;2)基于鍵值對(duì)的數(shù)...
    Sponge1128閱讀 728評(píng)論 0 1
  • 數(shù)據(jù)庫 Redis服務(wù)器將所有數(shù)據(jù)庫保存在redisServer結(jié)構(gòu)的db數(shù)組中,db數(shù)組的每一項(xiàng)都是一個(gè)redi...
    稻殼_be03閱讀 289評(píng)論 1 0
  • 除夕謁祖先,上香拜諸神,拂去犬年塵,度盡昨日灰,五谷貢香案,糖果陳一盤,赤橙青黃綠,紅白雜其間,香花滿爐開,紅臘騰...
    無網(wǎng)不盛888閱讀 468評(píng)論 0 4

友情鏈接更多精彩內(nèi)容