W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在前面的數(shù)個章節(jié)里, 我們陸續(xù)介紹了 Redis 用到的所有主要數(shù)據(jù)結(jié)構(gòu), 比如簡單動態(tài)字符串(SDS)、雙端鏈表、字典、壓縮列表、整數(shù)集合, 等等。
Redis 并沒有直接使用這些數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)鍵值對數(shù)據(jù)庫, 而是基于這些數(shù)據(jù)結(jié)構(gòu)創(chuàng)建了一個對象系統(tǒng), 這個系統(tǒng)包含字符串對象、列表對象、哈希對象、集合對象和有序集合對象這五種類型的對象, 每種對象都用到了至少一種我們前面所介紹的數(shù)據(jù)結(jié)構(gòu)。
通過這五種不同類型的對象, Redis 可以在執(zhí)行命令之前, 根據(jù)對象的類型來判斷一個對象是否可以執(zhí)行給定的命令。 使用對象的另一個好處是, 我們可以針對不同的使用場景, 為對象設(shè)置多種不同的數(shù)據(jù)結(jié)構(gòu)實現(xiàn), 從而優(yōu)化對象在不同場景下的使用效率。
除此之外, Redis 的對象系統(tǒng)還實現(xiàn)了基于引用計數(shù)技術(shù)的內(nèi)存回收機制: 當程序不再使用某個對象的時候, 這個對象所占用的內(nèi)存就會被自動釋放; 另外, Redis 還通過引用計數(shù)技術(shù)實現(xiàn)了對象共享機制, 這一機制可以在適當?shù)臈l件下, 通過讓多個數(shù)據(jù)庫鍵共享同一個對象來節(jié)約內(nèi)存。
最后, Redis 的對象帶有訪問時間記錄信息, 該信息可以用于計算數(shù)據(jù)庫鍵的空轉(zhuǎn)時長, 在服務(wù)器啟用了?maxmemory
?功能的情況下, 空轉(zhuǎn)時長較大的那些鍵可能會優(yōu)先被服務(wù)器刪除。
本章接下來將逐一介紹以上提到的 Redis 對象系統(tǒng)的各個特性。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: