日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Redis各個(gè)數(shù)據(jù)類(lèi)型的使用場(chǎng)景,redis數(shù)據(jù)類(lèi)型及應(yīng)用場(chǎng)景

提供五種數(shù)據(jù)類(lèi)型:String,hash,list,set及zset(sortedset) 。應(yīng)用場(chǎng)景:Redis犧牲了常規(guī)數(shù)據(jù)庫(kù)中的數(shù)據(jù)表、復(fù)雜查詢(xún)等功能,換來(lái)了很大的性能提升,特別適合那些對(duì)讀寫(xiě)性能要求極高,且數(shù)據(jù)表結(jié)構(gòu)簡(jiǎn)單(key-value、list、set之類(lèi))、查詢(xún)條件也同樣簡(jiǎn)單的應(yīng)用場(chǎng)景 。
Redis是啥?

Redis各個(gè)數(shù)據(jù)類(lèi)型的使用場(chǎng)景,redis數(shù)據(jù)類(lèi)型及應(yīng)用場(chǎng)景


想要了解Redis,先從Redis是什么?為何要用Redis?有哪些特性,以及其集群架構(gòu)來(lái)幾個(gè)方面來(lái)了解 。Redis 簡(jiǎn)介Redis 是一個(gè)開(kāi)源(BSD 許可)的、內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),它可以用作數(shù)據(jù)庫(kù)、緩存和消息中間件 。為什么要用 Redis在高并發(fā)場(chǎng)景下,如果需要經(jīng)常連接結(jié)果變動(dòng)頻繁的數(shù)據(jù)庫(kù),會(huì)導(dǎo)致數(shù)據(jù)庫(kù)讀取及存取的速度變慢,數(shù)據(jù)庫(kù)壓力極大 。
因此我們需要通過(guò)緩存來(lái)減少數(shù)據(jù)庫(kù)的壓力,使得大量的訪問(wèn)進(jìn)來(lái)能夠命中緩存,只有少量的需要到數(shù)據(jù)庫(kù)層 。由于緩存基于內(nèi)存,可支持的并發(fā)量遠(yuǎn)遠(yuǎn)大于基于硬盤(pán)的數(shù)據(jù)庫(kù) 。所以對(duì)于高并發(fā)設(shè)計(jì),緩存的設(shè)計(jì)是必不可少的一環(huán) 。而 Redis 作為比較熱門(mén)的內(nèi)存存儲(chǔ)系統(tǒng)之一,由于其對(duì)數(shù)據(jù)持久化的支持,種類(lèi)豐富的數(shù)據(jù)結(jié)構(gòu),使其定位更傾向于內(nèi)存數(shù)據(jù)庫(kù),適用于對(duì)讀寫(xiě)效率要求都很高、數(shù)據(jù)處理業(yè)務(wù)復(fù)雜和對(duì)安全性要求較高的系統(tǒng) 。
Redis 特征單線程,利用 redis 隊(duì)列技術(shù)將訪問(wèn)變?yōu)榇性L問(wèn),消除了傳統(tǒng)數(shù)據(jù)庫(kù)串行控制的開(kāi)銷(xiāo) 。Redis 的線程模型:Redis 支持?jǐn)?shù)據(jù)的持久化,包括 RDB 的全量持久化,或者 AOF 的增量持久化,從而使得Redis 掛了,數(shù)據(jù)是有機(jī)會(huì)恢復(fù)的 。也可以將內(nèi)存中的數(shù)據(jù)保持在磁盤(pán)中,重啟的時(shí)候可以再次加載進(jìn)行使用 。
分布式架構(gòu),讀寫(xiě)分離 。支持的數(shù)據(jù)結(jié)構(gòu)豐富 。Redis 不僅僅支持簡(jiǎn)單的 key-value 類(lèi)型的數(shù)據(jù),同時(shí)還提供 list、set、zset、hash 等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ) 。Redis 支持?jǐn)?shù)據(jù)的備份,提供成熟的主備同步,故障切換的功能,從而保證了高可用 。Redis Cluster 架構(gòu)Redis 搭建方式有很多種,本章主要介紹 Redis Cluster 集群構(gòu)建方式:Redis 3.0 之后版本支持 Redis Cluster 集群,Redis Cluster 采用無(wú)中心結(jié)構(gòu),每個(gè)節(jié)點(diǎn)保存數(shù)據(jù)和整個(gè)集群狀態(tài),每個(gè)節(jié)點(diǎn)都和其他所有節(jié)點(diǎn)連接 。
Redis Cluster 為了保證數(shù)據(jù)的高可用性,加入了主從模式,一個(gè)主節(jié)點(diǎn)對(duì)應(yīng)一個(gè)或多個(gè)從節(jié)點(diǎn),主節(jié)點(diǎn)提供數(shù)據(jù)存取,從節(jié)點(diǎn)則是從主節(jié)點(diǎn)拉取數(shù)據(jù)備份,當(dāng)這個(gè)主節(jié)點(diǎn)掛掉后,就會(huì)有這個(gè)從節(jié)點(diǎn)選取一個(gè)來(lái)充當(dāng)主節(jié)點(diǎn),從而保證集群不會(huì)掛掉 。主從結(jié)構(gòu),一是為了純粹的冗余備份,二是為了提升讀性能,比如很消耗性能的 SORT 就可以由從服務(wù)器來(lái)承擔(dān) 。
redis有哪些數(shù)據(jù)類(lèi)型?
Redis各個(gè)數(shù)據(jù)類(lèi)型的使用場(chǎng)景,redis數(shù)據(jù)類(lèi)型及應(yīng)用場(chǎng)景


Redis中的所有 value 都是以 Object 的形式存在的,其通用結(jié)構(gòu)如下:typedef struct redisObject {unsigned [type] 4;unsigned [encoding] 4;unsigned [lru] REDIS_LRU_BITS;int refcount;void *ptr;} robj;type:指類(lèi)型,String、Hash、List、Set、ZSet;encoding:類(lèi)型具體的實(shí)現(xiàn)方式;比如 Set 是用 hashTable 實(shí)現(xiàn)還是 intSet 實(shí)現(xiàn);lru:最后一次被訪問(wèn)的信息,其實(shí)一看到 LRU 估計(jì)也就和淘汰策略有關(guān);refcount:對(duì)象引用計(jì)數(shù);ptr:指向?qū)嶋H實(shí)現(xiàn)者的地址;StringRedis 中的 String 不僅僅表示 字符串,還可以表示 整型、浮點(diǎn)型 。
String 的編碼可以是 int、raw 或者 embstr;單說(shuō)普通的字符串,就有 raw 和 embstr 兩種實(shí)現(xiàn)方式,embstr 是 Redis 3.0 新增的數(shù)據(jù)結(jié)構(gòu):字符串長(zhǎng)度小于 39 字節(jié),就用 embstr 對(duì)象,否則用傳統(tǒng)的raw對(duì)象(Redis 3.2版本之后,這里變成了以 44 字節(jié)為分界) 。

推薦閱讀