redis 和Mysql 的一些 區別

說 Redis 的緩存機制實現之前,我想先回顧一下 mysql

redis 和Mysql 的一些 區別

mysql 存儲在哪兒呢?

以 windows 為例,mysql 的表和數據,存儲在data 目錄下frm ibd 後綴的文件中

mysql存儲在機器/服務器的 硬盤中

所以 mysql 讀寫數據都需要從磁盤讀取 。磁盤的容量,帶寬的大小就影響了網站的訪問速度,讀取的方式,也就是 sql語句,次數和效率也會影響讀取效率。

當訪問量和併發很大的時候,mysql 就撐不住了,據統計,mysql的連接池併發數max為 500-1000

這時,我們可以通過 慢查詢優化 ,cdn ,頁面靜態化, nginx 負載均衡策略 ,甚至 分佈式數據庫 來進行 sql優化 ,當然也可以使用 高速緩存,比如 redis。


redis 和Mysql 的一些 區別

Redis - 高併發,內存高速cache ,處理讀寫io的高併發容忍。

redis 通常被使用來將那些經常被訪問的內容緩存在內存中。

很多人談到redis ,哦,k-v 存儲數據庫啊, 速度快啊!為什麼快啊? 人家存內存啊,能不快嗎?關鍵人家還支持複雜的數據結構,list 什麼的,很多高併發場景都可以使用。 比如:電商秒殺場景的解決策略與具體原理

remote dictionary server (遠程數據服務) 內存高速緩存數據庫 數據模型為 k-v 也就是redis 的一種最經常使用的數據類型 string

k-v 的算法時間複雜度 可是 0(1) 而mysql 的查詢是基於表關聯技術 ,這就是nosql的優勢所在。

附上redis 和memcahe 的比較

  1. Redis不僅僅支持簡單的k/v類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
  2. Redis支持master-slave(主-從)模式應用,高可用的cache系統,支持集群服務器之間數據同步。
  3. Redis支持數據持久化,可以將內存中的數據保持在磁盤中,重啟的時候可以再次加載進行使用。
  4. Redis單個value的最大限制是1GB,(k-v),memcached只能保存1MB的數據。(k:250kb v:1mb)

redis 比sql 到底快多少呢?

1 從存儲媒介來看,內存比磁盤的讀取速度 hash查找是100w/s 的數量級

2 多路複用io (todo)


redis 和mysql 絕對不是競爭的關係,就好像你拿485和86去秋名山飆車,他們應該是一對好基友,在工作中合理運用兩者才能達到更好的效果。

redis 和Mysql 的一些 區別


分享到:


相關文章: