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

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

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

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

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

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

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

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

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

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

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

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

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

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

        1. 單元素操作是基礎(chǔ),操作復(fù)雜度為O(1);
          • Hash:HGET、HSET、HDEL;
          • Set類型的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號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 天天爽夜夜爽夜夜爽精品视频 | 2021年精品国产福利在线 | 亚洲无码日韩精品第一页| 欧美日韩精品一区二区在线播放| 亚洲精品无码久久久久去q| 久久精品二区| 国产精品永久免费视频| 老司机国内精品久久久久| 久久久国产乱子伦精品作者| 四虎精品亚洲一区二区三区| 99国产精品国产免费观看| 国产精品网站在线观看| 国产精品国产三级国产普通话| 亚洲av永久无码精品古装片| 亚洲国产av无码精品| 久久久久亚洲精品无码网址 | 久久精品国产只有精品66 | 亚洲综合一区二区国产精品| 国产国产成人精品久久| 99在线精品一区二区三区| 国产伦精品免编号公布| 香蕉99久久国产综合精品宅男自| 精品国产福利盛宴在线观看| 国产精品青草视频免费播放| 亚洲国产精品成| 日本一区二区三区精品中文字幕| 国产精品电影在线观看| 91久久婷婷国产综合精品青草| 精品国产精品国产偷麻豆 | 成人国产精品日本在线观看| 97久人人做人人妻人人玩精品| 久久91综合国产91久久精品| 精品国产一区二区三区久久| 国产福利91精品一区二区三区| 成人区人妻精品一区二区不卡网站| 国产精品igao视频网| 国产三级久久久精品麻豆三级| 国产精品亚洲片在线观看不卡 | 国产L精品国产亚洲区久久| 国产精品第一区第27页| 国产精品制服丝袜亚洲欧美|