【轉】mysql和redis的一些區別


轉載自:https://m.2cto.com/database/201701/587157.html

mysql和redis的一些區別。我們知道,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和內存+磁盤的用法最好是不同的。

前者是內存數據庫,數據保存在內存中,當然速度快。

后者是關系型數據庫,功能強大,數據訪問也就慢。

像memcache,MongoDB,Redis,都屬於No sql系列。

不是一個類型的東西,應用場景也不太一樣,還是要看你的需求來決定。

一般來說,寫入數據是直接到mysql,讀取類的是redis。 這樣就說 mysql->redis的同步用的比較多。 mysql作為數據持久化和管理比redis好太多,redis大多只用來做 數據讀取緩存、隊列、鎖、等等的使用。 持久化的話也提供了rdb、aof 保證數據的實時不丟失。 redis和mysql要根據具體業務場景去選型

mysql:數據放在磁盤

redis:數據放在內存 redis適合放一些頻繁使用,比較熱的數據,因為是放在內存中,讀寫速度都非常快,一般會應用在下面一些場景

排行榜

計數器

消息隊列推送


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM