為什么redis比mysql快

redis將所有數據放在內存中,非數據同步正常工作中,是不需要從磁盤讀取數據的,0次io。內存響應時間大約為100納秒,這是redis速度快的重要基礎。

mysql是持久化存儲,存放在磁盤里面,檢索的話,會涉及到一定的IO,為了解決這個瓶頸,于是出現了緩存,比如現在用的最多的 memcached(簡稱mc)。

為什么redis比mysql快首先,用戶訪問mc,如果未命中,就去訪問mysql,之后像內存和硬盤一樣,把數據復制到mc一部分redis和mc都是緩存,并且都是駐留在內存中運行的,這大大提升了高數據量web訪問的訪問速度。(推薦學習:Redis視頻教程

然而mc只是提供了簡單的數據結構,比如 String存儲;redis卻提供了大量的數據結構,比如string、list、set、hashset、sorted set這些,這使得用戶方便了好多,畢竟封裝了一層實用的功能,同時實現了同樣的效果,當然用redis而慢慢舍棄mc。

Redis是單線程。簡化算法的實現,并發的數據結構實現不但困難且測試也麻煩。第二,單線程避免了線程切換以及加鎖釋放鎖帶來的消耗,對于服務端開發來說,鎖和線程切換通常是性能殺手。當然了,單線程也會有它的缺點,也是Redis的噩夢:阻塞。如果執行一個命令過長,那么會造成其他命令的阻塞,對于Redis是十分致命的,所以Redis是面向快速執行場景的數據庫

Redis使用epoll作為I/O多路復用技術的實現,再加上Redis自身的事件處理模型將epoll的read、write、close等都轉換成事件,不在網絡I/O上浪費過多的時間。實現對多個FD讀寫的監控,提高性能。

mysql用于持久化的存儲數據到硬盤,功能強大,但是速度較慢

redis用于存儲使用較為頻繁的數據到緩存中,讀取速度快

更多Redis相關技術文章,請訪問Redis視頻教程欄目進行學習!

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享