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

redis常用命令,Redis常用命令( 二 )


embstr 的優(yōu)勢(shì)在于創(chuàng)建時(shí)少分配一次空間(RedisObject 和 sds 是連續(xù)的),刪除時(shí)少釋放一次空間,以及對(duì)象的所有數(shù)據(jù)連在一起,尋找方便;當(dāng)然缺點(diǎn)也非常明顯,如果字符串的長(zhǎng)度增加,需要重新分配內(nèi)存的時(shí)候,整個(gè) RedisObject 和 sds 都需要重新分配空間 。修改 embstr 對(duì)象的時(shí)候,Redis 會(huì)將其轉(zhuǎn)換成 raw 格式再進(jìn)行修改,所以 embstr 對(duì)象修改之后的對(duì)象,一定是 raw 的 。
應(yīng)用場(chǎng)景:常規(guī)計(jì)數(shù)都可以使用,可用作緩存、計(jì)數(shù)、限速等等,比如商品剩余數(shù)量,字典表信息,長(zhǎng)度不能超過(guò) 512MB 。HashHash 對(duì)象的底層實(shí)現(xiàn)可以是 ziplist 或者 hashtable 。ziplist:在這個(gè)數(shù)據(jù)結(jié)構(gòu)中,是按照 key1, value1, key2, value2 這樣的順序存放來(lái)存儲(chǔ)的;hashTable:是由 dict 這個(gè)結(jié)構(gòu)來(lái)實(shí)現(xiàn)的 。
(這個(gè)結(jié)構(gòu)比較復(fù)雜,后面單寫(xiě)一篇來(lái)說(shuō))應(yīng)用場(chǎng)景:Hash 適用于存儲(chǔ)結(jié)構(gòu)化的對(duì)象,可以直接修改這個(gè)對(duì)象中的某個(gè)字段的值;比如用戶信息 。ListList 對(duì)象的編碼可以是 ziplist 或者 linkedlist,從名字上也能看出來(lái)兩種結(jié)構(gòu)都是啥 。ziplist:是一種壓縮鏈表,它存儲(chǔ)數(shù)據(jù)都是連續(xù)地放在內(nèi)存區(qū)域當(dāng)中 。
linkedlist:是一種雙向鏈表 。應(yīng)用場(chǎng)景:通常網(wǎng)站上的消息列表,可以使用 List 來(lái)進(jìn)行存儲(chǔ);另外 lrange 命令,從某個(gè)元素開(kāi)始,讀取多少個(gè)元素,可以看做是分頁(yè)查詢,比如很多網(wǎng)站上那種不斷下拉,不斷分頁(yè)的效果 。SetSet 相對(duì)于 List 來(lái)說(shuō),Set 是可以自動(dòng)排重的;它的編碼可以是 intset 或者 hashtable。
intset:是一個(gè)整數(shù)集合,支持三種長(zhǎng)度的整數(shù):int16_t、int32_t、int64_t;集合中的數(shù)據(jù)長(zhǎng)度必須是一致的,比如一個(gè) int16_t 長(zhǎng)度的 Set,當(dāng)插入了一條 int32_t 長(zhǎng)度的數(shù)據(jù),那么所有的數(shù)據(jù)都會(huì)轉(zhuǎn)成 int32_t 長(zhǎng)度(不支持降級(jí)) 。hashTable:對(duì)于 Set 來(lái)說(shuō),hashTable 的 value 永遠(yuǎn)為 NULL 。
應(yīng)用場(chǎng)景:如果要存儲(chǔ)一個(gè)列表,同時(shí)又需要做數(shù)據(jù)排重的時(shí)候,可以使用 set ;另外,Redis 還為 Set 提供了求交集、并集、差集等操作,比如微博上面的【共同關(guān)注】這個(gè)功能,就可以用 Set 實(shí)現(xiàn) 。ZSet / Sorted Set和 Set 相比,ZSet 增加了一個(gè)參數(shù) score,集合中的元素按照 score 進(jìn)行有序排列 。
有序集合的編碼可能兩種,一種是 ziplist,另一種是 skipList 與 hashTable 的結(jié)合 。ziplist:和 Hash 類(lèi)似,元素 和 score 都是按順序存放的;比較適合用于元素內(nèi)容不大的場(chǎng)景 。skipListhashTable:是一種添加,移除,更新元素等操作更高效的數(shù)據(jù)結(jié)構(gòu),這個(gè)跳躍表的數(shù)據(jù)結(jié)構(gòu),我近期會(huì)發(fā)一篇文章單獨(dú)介紹 。
Redis面試題,為什么AOF文件往往大于RDB?為什么AOF恢復(fù)數(shù)據(jù)慢于RDB?aop存的是每一條指令,rdb存的是內(nèi)存中的數(shù)據(jù)二進(jìn)制備份,無(wú)論從結(jié)構(gòu)還是數(shù)據(jù)上說(shuō),aof都會(huì)更大 。

推薦閱讀