Redis Mysql模式和記憶體 硬碟模式的異同

2022-09-15 11:36:11 字數 1054 閱讀 9019

學習任何新知識,都是乙個循序漸進的過程,從剛開始的懵懂無知,到簡單熟悉,然後突然的徹悟,成果讓人欣喜若狂,心情也會快樂很久。

首先看圖:

首先,我們知道,mysql是持久化儲存,存放在磁碟裡面,檢索的話,會涉及到一定的io,為了解決這個瓶頸,於是出現了快取,比如現在用的最多的 memcached(簡稱mc)。首先,使用者訪問mc,如果未命中,就去訪問mysql,之後像記憶體和硬碟一樣,把資料複製到mc一部分。

redis和mc都是快取,並且都是駐留在記憶體中執行的,這大大提公升了高資料量web訪問的訪問速度。然而mc只是提供了簡單的資料結構,比如 string儲存;redis卻提供了大量的資料結構,比如string、list、set、hashset、sorted set這些,這使得使用者方便了好多,畢竟封裝了一層實用的功能,同時實現了同樣的效果,當然用redis而慢慢捨棄mc。

記憶體和硬碟的關係,硬碟放置主體資料用於持久化儲存,而記憶體則是當前執行的那部分資料,cpu訪問記憶體而不是磁碟,這大大提公升了執行的速度,當然這是基於程式的區域性化訪問原理。

推理到redis+mysql,它是記憶體+磁碟關係的乙個對映,mysql放在磁碟,redis放在記憶體,這樣的話,web應用每次只訪問redis,如果沒有找到的資料,才去訪問mysql。

然而redis+mysql和記憶體+磁碟的用法最好是不同的。

於是有人會猜測,mysql儲存了100g的資料,使用者訪問mysql的時候,把10mb資料拷貝到redis,比如select乙個id=1000的數 據,那就把id=10到id=9999的資料放到redis,用於下次訪問。可是關鍵在於mysql資料的訪問,並不是檔案這種區域性性原理,不同的使用者訪 問的是完全不同的東西,跟id的次序沒有任何關係。

其實redis的強項也不在此,它擅長儲存元資料類的資料,也就是說描述性的而不是資料本身

下圖是乙個檢索的流程圖:

Redis Mysql模式和記憶體 硬碟模式的異同

學習任何新知識,都是乙個循序漸進的過程,從剛開始的懵懂無知,到簡單熟悉,然後突然的徹悟,成果讓人欣喜若狂,心情也會快樂很久。首先看圖 首先,我們知道,mysql是持久化儲存,存放在磁碟裡面,檢索的話,會涉及到一定的io,為了解決這個瓶頸,於是出現了快取,比如現在用的最多的 memcached 簡稱m...

Redis Mysql模式和記憶體 硬碟模式的異同

學習任何新知識,都是乙個循序漸進的過程,從剛開始的懵懂無知,到簡單熟悉,然後突然的徹悟,成果讓人欣喜若狂,心情也會快樂很久。首先看圖 首先,我們知道,mysql是持久化儲存,存放在磁碟裡面,檢索的話,會涉及到一定的io,為了解決這個瓶頸,於是出現了快取,比如現在用的最多的memcached 簡稱mc...

Union的記憶體模型 大端模式和小段模式

首先看一段程式,猜測輸出結果 include union a int main 結果是 859045622 而下面這段程式 include union a int main 結果是266 為啥呢?首先我們看這裡有個union聯合體,我們知道聯合體內的資料型別是共享記憶體的。也就是說這個a 其實就占用...