redis的數(shù)據(jù)存在哪里?
首先要明白redis是一個(gè)數(shù)據(jù)庫(kù), redis是一個(gè)內(nèi)存數(shù)據(jù)庫(kù), 所有數(shù)據(jù)基本上都存在于內(nèi)存當(dāng)中, 會(huì)定時(shí)以追加或者快照的方式刷新到硬盤(pán)中. 由于redis是一個(gè)內(nèi)存數(shù)據(jù)庫(kù), 所以讀取寫(xiě)入的速度是非常快的, 所以經(jīng)常被用來(lái)做數(shù)據(jù), 頁(yè)面等的緩存。
redis常用的數(shù)據(jù)類型
Redis最為常用的數(shù)據(jù)類型主要有以下:
String
Hash
List
Set
Sorted set
pub/sub
Transactions
type代表一個(gè)value對(duì)象具體是何種數(shù)據(jù)類型,
encoding是不同數(shù)據(jù)類型在redis內(nèi)部的存儲(chǔ)方式,
比如:type=string代表value存儲(chǔ)的是一個(gè)普通字符串,那么對(duì)應(yīng)的encoding可以是raw或者是int,如果是int則代表實(shí)際redis內(nèi)部是按數(shù)值型類存儲(chǔ)和表示這個(gè)字符串的,當(dāng)然前提是這個(gè)字符串本身可以用數(shù)值表示,比如:”123″ “456”這樣的字符串。
這里需要特殊說(shuō)明一下vm字段,只有打開(kāi)了Redis的虛擬內(nèi)存功能,此字段才會(huì)真正的分配內(nèi)存,該功能默認(rèn)是關(guān)閉狀態(tài)的,該功能會(huì)在后面具體描述。通過(guò)上圖我們可以發(fā)現(xiàn)Redis使用redisObject來(lái)表示所有的key/value數(shù)據(jù)是比較浪費(fèi)內(nèi)存的,當(dāng)然這些內(nèi)存管理成本的付出主要也是為了給Redis不同數(shù)據(jù)類型提供一個(gè)統(tǒng)一的管理接口,實(shí)際作者也提供了多種方法幫助我們盡量節(jié)省內(nèi)存使用。