Redis儲存結構

來源:互聯網
上載者:User

Redis現在是比較流行的快取資料庫,一般剛接觸的時候都會發現其可以儲存字串(string)、雜湊表(hash)、列表(list)、集合(set)、有序集合(sorted set)等。redis是一個key-value儲存,value可以包含上面列出的多種結構,但是key都是字串。也就是說key是string類型,value為上面類型的一種。

由於以上每種資料結構的儲存指令在redis中都不一樣,單個看來想要使用redis必須要先區分要儲存的對象的結構,然後選擇相應的指令。但是這樣使用起來確實是很不利的,如果一次要存入多種形式的值,我就要實現多種儲存方式。

為了便於開發和使用redis引入了對象,即Object Storage Service。上面的每種資料結構都是一種對象,所以,在項目中只需要實現對象的儲存即可。

Redis中每個對象都有一個redisObject結構,該結構中和儲存資料相關的三種屬性分別是儲存資料的類型type、值的編碼屬性encoding和指標ptr屬性:

typedef struct redisObject{//類型unsigned type:4;//編碼unsigned encoding:4;//指向底層實現資料結構的指標void *ptr//虛擬記憶體和其他資訊等.....}robj;
類型常量 對象的名稱 type值
REDIS_STRING 字串對象 string
REDIS_LIST 列表對象 list
REDIS_HASH 雜湊對象 hash
REDIS_SET 集合對象 set
REDIS_ZSET 有序集合對象 zset

擷取儲存值的類型編碼指令:
TYPE key

如,我在redis中存入一個字串的值:

[root@iZ8vb8r420ejxfron03cj7Z ~]# redis-cli127.0.0.1:6379> set msg "rhett"  OK127.0.0.1:6379> get msg"rhett"127.0.0.1:6379> type msgstring
編碼常量 對象的名稱 type值
REDIS_ENCODING_INT 整數 int
REDIS_ENCODING_EMBSTR embstr編碼的簡單動態字串(SDS) list
REDIS_ENCODING_RAW 簡單動態字串 raw
REDIS_ENCODING_HT 字典 hashtable
REDIS_ENCODING_LINKEDLIST 雙端鏈表 linkedlist
REDIS_ENCODING_ZIPLIST 壓縮列表 ziplist
REDIS_ENCODING_INTSET 整數集合 intset
REDIS_ENCODING_SKIPLIST 跳躍表和字典 skiplist

redis中的樣本:

[root@iZ8vb8r420ejxfron03cj7Z ~]# redis-cli127.0.0.1:6379> set msg "rhett"  OK127.0.0.1:6379> object encoding msg"embstr"

參考書籍:《Redis設計與實現》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.