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集合中不允許出現重複的元...