對象

2018-02-23 16:24 更新

對象

在前面的數(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)的各個特性。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號