Redis是一個(gè)基于內(nèi)存的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),相較于傳統(tǒng)的磁盤存儲(chǔ),它的讀取、寫入速度更快。這主要得益于以下幾點(diǎn):
使用內(nèi)存存儲(chǔ)
Redis將所有數(shù)據(jù)存儲(chǔ)在內(nèi)存中,不同于其他數(shù)據(jù)庫的磁盤存儲(chǔ)。內(nèi)存的存取速度比磁盤存儲(chǔ)快了好幾個(gè)數(shù)量級(jí),這導(dǎo)致Redis在讀取、寫入速度上要快于其他磁盤存儲(chǔ)的數(shù)據(jù)庫。像傳統(tǒng)數(shù)據(jù)庫使用磁盤存儲(chǔ)表示將每一次的修改刷新在磁盤寫入,一次寫入操作要進(jìn)行若干次尋道、旋轉(zhuǎn)和尋道燈移動(dòng)等機(jī)械操作,但Redis的存儲(chǔ)方式很不一樣,它的所有修改都是直接在內(nèi)存里進(jìn)行,一次修改僅僅涉及數(shù)據(jù)的存取、處理、替換、回填等內(nèi)存操作,所以Redis極高的訪問效率在內(nèi)存操作上有著最大限度的體現(xiàn)。
采用單線程方式進(jìn)行操作
Redis采用了單線程的方式,所以Redis執(zhí)行操作時(shí)是 從內(nèi)存中讀取數(shù)據(jù),處理命令,然后將結(jié)果響應(yīng)給客戶端。這樣操作的過程更加簡單、快速,沒有使用并發(fā)消耗的一些操作。因此在沒有壓力時(shí),發(fā)揮Redis并發(fā)能力的成本非常之低,支持并發(fā)和連接的能力也非常強(qiáng)。
數(shù)據(jù)結(jié)構(gòu)簡單而高效
Redis支持的數(shù)據(jù)類型非常簡潔,它只支持五種基本的數(shù)據(jù)結(jié)構(gòu),分別是String,List,Set,Sorted Set和Hash,但是每一種數(shù)據(jù)結(jié)構(gòu)卻都極其高效。比如不僅僅支持List類型的操作命令,而且還支持Store,能夠用于像采購清單的自動(dòng)去重,以及許多沒有 SQL 完成器的數(shù)據(jù)透視。Hash在緩存的場景中的應(yīng)用也是非常靈活的,可以將其中的鍵值對轉(zhuǎn)化為可讀性更高的可讀性更高的JSON結(jié)構(gòu)。這樣操作的過程更加簡單、快速,體現(xiàn)了Redis存儲(chǔ)速度快的優(yōu)勢。