Redis儲存結構

2021-07-30 10:45:45 字數 1648 閱讀 6373

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

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

為了便於開發和使用redis引入了物件,即物件儲存。上面的每種資料結構都是一種物件,所以,在專案中只需要實現物件的儲存即可。

typedef

struct redisobjectrobj;

型別常量

物件的名稱

type值

redis_string

字串物件

string

redis_list

列表物件

list

redis_hash

雜湊物件

hash

redis_set

集合物件

setredis_zset

有序集合物件

zset

獲取儲存值的型別編碼指令:

type key

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

[root@iz8vb8r420ejxfron03cj7z ~]# redis-cli

127.0

.0.1:6379> set msg "rhett"

ok127.0

.0.1:6379> get msg

"rhett"

127.0

.0.1:6379> type msg

string

編碼常量

物件的名稱

type值

redis_encoding_int

整數int

redis_encoding_embstr

embstr編碼的簡單動態字串(sds)

list

redis_encoding_raw

簡單動態字串

rawredis_encoding_ht

字典hashtable

redis_encoding_linkedlist

雙端鍊錶

linkedlist

redis_encoding_ziplist

壓縮列表

ziplist

redis_encoding_intset

整數集合

intset

redis_encoding_skiplist

跳躍表和字典

skiplist

redis中的示例:

[root@iz8vb8r420ejxfron03cj7z ~]# redis-cli

127.0

.0.1:6379> set msg "rhett"

ok127.0

.0.1:6379> object encoding msg

"embstr"

redis的儲存結構

hash 是乙個string 型別的field 和value 的對映表。hash特別適合儲存物件,相對於將物件的每個欄位存成單個string型別。乙個物件儲存在hash型別中會占用更少的記憶體,並且可以更方便的訪問整個物件。我們簡單舉個例項來描述下hash的應用場景,比如我們要儲存乙個使用者資訊物件...

Redis記憶體儲存結構分析

from redis a persistent key value database with built in net inte ce written in ansi c for posix systems 本文是基於 redis v2.2.4 版本進行分析.redis 是支援多key value...

redis的資料結構 儲存set

在redis中,我們可以將set型別看作為沒有排序的字元集合,和list型別一樣,我 們也可以在該型別的資料值上執行新增 刪除或判斷某一元素是否存在等操作。需要 說明的是,這些操作的時間是常量時間。set可包含的最大元素數是4294967295。和list型別不同的是,set集合中不允許出現重複的元...