欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          redis為什么比mysql快

          redis為什么比mysql快

          MySQL數(shù)據(jù)存儲(chǔ)是存儲(chǔ)在表中,查找數(shù)據(jù)時(shí)要先對(duì)表進(jìn)行全局掃描或者根據(jù)索引查找,這涉及到磁盤的查找,磁盤查找如果是按條點(diǎn)查找可能會(huì)快點(diǎn),但是順序查找就比較慢;而Redis不用這么麻煩,本身就是存儲(chǔ)在內(nèi)存中,會(huì)根據(jù)數(shù)據(jù)在內(nèi)存的位置直接取出。 (推薦學(xué)習(xí):Redis視頻教程)

          Redis是基于內(nèi)存存儲(chǔ)的,MySQL是基于磁盤存儲(chǔ)的

          Redis存儲(chǔ)的是k-v格式的數(shù)據(jù)。時(shí)間復(fù)雜度是O(1),常數(shù)階,而MySQL引擎的底層實(shí)現(xiàn)是B+Tree,時(shí)間復(fù)雜度是O(logn),對(duì)數(shù)階。Redis會(huì)比MySQL快一點(diǎn)點(diǎn)。

          Redis是單線程的多路復(fù)用IO,單線程避免了線程切換的開(kāi)銷,而多路復(fù)用IO避免了IO等待的開(kāi)銷,在多核處理器下提高處理器的使用效率可以對(duì)數(shù)據(jù)進(jìn)行分區(qū),然后每個(gè)處理器處理不同的數(shù)據(jù)。

          首先,我們知道,mysql是持久化存儲(chǔ),存放在磁盤里面,檢索的話,會(huì)涉及到一定的IO,為了解決這個(gè)瓶頸,于是出現(xiàn)了緩存,比如現(xiàn)在用的最多的 memcached(簡(jiǎn)稱mc)。

          首先,用戶訪問(wèn)mc,如果未命中,就去訪問(wèn)mysql,之后像內(nèi)存和硬盤一樣,把數(shù)據(jù)復(fù)制到mc一部分。

          redis和mc都是緩存,并且都是駐留在內(nèi)存中運(yùn)行的,這大大提升了高數(shù)據(jù)量web訪問(wèn)的訪問(wèn)速度。然而mc只是提供了簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)。

          比如 string存儲(chǔ);redis卻提供了大量的數(shù)據(jù)結(jié)構(gòu),比如string、list、set、hashset、sorted set這些,這使得用戶方便了好多,畢竟封裝了一層實(shí)用的功能,同時(shí)實(shí)現(xiàn)了同樣的效果,當(dāng)然用redis而慢慢舍棄mc。

          內(nèi)存和硬盤的關(guān)系,硬盤放置主體數(shù)據(jù)用于持久化存儲(chǔ),而內(nèi)存則是當(dāng)前運(yùn)行的那部分?jǐn)?shù)據(jù),CPU訪問(wèn)內(nèi)存而不是磁盤,這大大提升了運(yùn)行的速度,當(dāng)然這是基于程序的局部化訪問(wèn)原理。

          推理到redis+mysql,它是內(nèi)存+磁盤關(guān)系的一個(gè)映射,mysql放在磁盤,redis放在內(nèi)存,這樣的話,web應(yīng)用每次只訪問(wèn)redis,如果沒(méi)有找到的數(shù)據(jù),才去訪問(wèn)Mysql。

          然而redis+mysql和內(nèi)存+磁盤的用法最好是不同的。

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)