站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        Redis的數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作_無(wú)緒聽(tīng)雨眠-CSDN博客

        Redis的數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作_無(wú)緒聽(tīng)雨眠-CSDN博客

        推薦(免費(fèi)):redis

        Redis完成數(shù)據(jù)操作的速度能達(dá)到微秒級(jí)別,Redis能有這么突出的表現(xiàn),主要原因有兩個(gè):

        • Redis是內(nèi)存數(shù)據(jù)庫(kù),所有操作都在內(nèi)存上完成,內(nèi)存的訪問(wèn)速度本身就很快;
        • Redis擁有高效的數(shù)據(jù)類(lèi)型和數(shù)據(jù)結(jié)構(gòu)。Redis的數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作_無(wú)緒聽(tīng)雨眠-CSDN博客

        為了實(shí)現(xiàn)key到value的快速訪問(wèn),Redis使用哈希表來(lái)存儲(chǔ)鍵值對(duì),哈希桶中entry保存了指向?qū)嶋Hkey和value的指針,即使值是一個(gè)集合,也可以通過(guò)value指針查找到。Redis的數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作_無(wú)緒聽(tīng)雨眠-CSDN博客

        當(dāng)哈希表中數(shù)據(jù)越來(lái)越多后,會(huì)出現(xiàn)哈希沖突,也就是多個(gè)key的哈希值可能對(duì)應(yīng)到同一個(gè)哈希桶中。Redis使用鏈?zhǔn)焦?lái)解決哈希沖突,就是將同一個(gè)哈希桶中的多個(gè)元素用一個(gè)鏈表來(lái)保存,元素之間依次用指針鏈接。Redis的數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作_無(wú)緒聽(tīng)雨眠-CSDN博客

        如果哈希沖突越來(lái)越多,會(huì)導(dǎo)致哈希沖突鏈過(guò)長(zhǎng),進(jìn)而導(dǎo)致查找元素耗時(shí)長(zhǎng)、效率低。為了解決這個(gè)問(wèn)題,Redis會(huì)對(duì)哈希表進(jìn)行rehash操作,將多個(gè)entry元素分散保存,減少單個(gè)哈希桶中的元素個(gè)數(shù),從而減少單個(gè)桶中的沖突。

        Redis默認(rèn)使用兩個(gè)全局哈希表來(lái)進(jìn)行高效rehash,一開(kāi)始默認(rèn)使用哈希表1,哈希表2不分配空間,當(dāng)數(shù)據(jù)不斷增多時(shí),redis通過(guò)如下步驟進(jìn)行rehash:

        1. 給哈希表2分配更大的空間
        2. 把哈希表1中的數(shù)據(jù)拷貝到哈希表2中
        3. 釋放哈希表1的空間,留作下一次rehash擴(kuò)容備用

        但是第2步如果一次性將大量數(shù)據(jù)進(jìn)行拷貝,可能會(huì)造成Redis線程阻塞,無(wú)法服務(wù)其他請(qǐng)求,所以Redis采用了漸進(jìn)式rehash,就是每處理一個(gè)請(qǐng)求,順帶將這個(gè)索引位置上的所有entry進(jìn)行拷貝。Redis的數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作_無(wú)緒聽(tīng)雨眠-CSDN博客

        對(duì)于String類(lèi)型的value來(lái)說(shuō),找到哈希桶就可以直接進(jìn)行CRUD操作了,而對(duì)于集合來(lái)說(shuō),通過(guò)全局哈希表找到對(duì)應(yīng)的哈希桶后,在集合中再進(jìn)行CRUD。集合的操作效率與底層數(shù)據(jù)結(jié)構(gòu)和操作復(fù)雜度有關(guān)。

        Redis的數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)操作_無(wú)緒聽(tīng)雨眠-CSDN博客

        1. 單元素操作是基礎(chǔ),操作復(fù)雜度為O(1);
          • Hash:HGET、HSET、HDEL;
          • Set類(lèi)型的SADD、SREM、SRANDMEMBER等。
        2. 范圍操作非常耗時(shí),操作復(fù)雜度為O(N)。
          • Hash:HGETALL;
          • Set:SMEMBERS;
          • List:LRANGE
          • ZSet:ZRANGE
        3. 統(tǒng)計(jì)操作通常高效,操作復(fù)雜度為O(1)。
        4. 例外情況只有幾個(gè),操作復(fù)雜度為O(1)。
          • List:LPOP、RPOP、LPUSH、RPUSH

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 久久99精品久久只有精品| 久久99热国产这有精品| 国内精品久久久久影院优| 精品久久久久久无码人妻蜜桃| 99re6在线视频精品免费| 一本色道久久88综合日韩精品| 国产99视频精品免费视频76| 88久久精品无码一区二区毛片 | 日韩精品免费视频| 色欲久久久天天天综合网精品| 国产综合精品蜜芽| 精品视频在线v| 精品久久久久香蕉网| 伊人精品久久久久7777| 久久精品国产99久久香蕉| 国产福利电影一区二区三区久久久久成人精品综合 | 日韩精品中文字幕无码一区| 日韩一区二区三区在线精品| 精品国产免费一区二区三区| 99在线精品免费视频| 亚洲国产精品嫩草影院| 九九热在线视频观看这里只有精品| 国产精品第12页| 国产精品视频一区二区噜噜| 精品无码一区二区三区亚洲桃色| 亚洲av无码国产精品色午夜字幕| 亚洲精品无码你懂的网站| 久久国产精品免费一区| 国产偷窥熟女高潮精品视频| 国产精品成人h片在线| 国产福利电影一区二区三区,亚洲国模精品一区 | 国产日韩精品在线| 99精品视频在线| 国产精品美女久久久久网| 国产精品久久亚洲不卡动漫| 精品三级在线观看| 欧美日韩精品乱国产538| 欧美精品亚洲精品日韩专区va| 中文字幕精品一区影音先锋| 国产精品福利片免费看 | 精品亚洲国产成AV人片传媒|