- 使用Redis作為緩存
- 緩存
- 例子
- 緩存的引入
- Redis
- 緩存的實現
使用Redis作為緩存
緩存
?什么是緩存,第一次接觸這個東西是在考研學習408的時候,計算機組成原理里面學習到Cache緩存,用于降低由于內存和CPU的速度的差異帶來的延遲。它是在CPU和內存之間再添上一層,速度快于內存,把最近或者最常用的數據放到緩存中,這樣可以大大提高cpu的性能。
例子
?其實這個思想在我們日常生活中也處處有體現,譬如在書桌上工作學習的時候,如果把桌子上坐著的我們比作CPU的話,那么書桌上的范圍就是緩存,而書房里其它的位置就是內存。因為我們肯定會把最近使用或者最常使用的東西(數據)放在書桌上的手邊,這樣有利于我們處理數據,而不是每次需要一個常用的東西就從書架上或者柜子里取,用完了再放回去,需要用了又去取,這樣會浪費很多時間。
緩存的引入
?我們進入電商網站后需要返回商戶信息,但是每次獲取商戶信息都是去訪問數據庫,數據庫的數據是存儲在外存也就是硬盤上的,每次去讀取都要進行IO操作很浪費時間。商戶信息又是經常訪問的數據,這就恰好滿足我們需要一個緩存來提高性能的要求。
Redis
?而Redis作為非結構型數據庫,它的數據是保存在內存中的,讀寫速度很快。下面是計算機三種存儲介質的速度:
- CPU:響應速度20-40ns,存儲空間1-32MB;
- 內存:響應速度100ns,存儲空間一般在16G-128GB之間;
- 磁盤:響應速度3-5ms,存儲空間可達到4TB。
? 從中可以看出來,用Redis作為緩存是一個很好的選擇。
緩存的實現
客戶端在獲取數據的時候,不會直接訪問數據庫,而是先去訪問Redis緩存,看看Redis中是否有想要的數據,如果有就從Redis中獲取并直接返回,如果沒有才會再去數據庫中獲取并保存到緩存中,以便下次使用,這與CPU和Cache緩存之間的思路是一樣的。下面兩張圖分別對應緩存命中和緩存不命中的情況,可以看到,添加了緩存之后,將常用數據保存到Redis中,確實可以讓數據的獲取多次從內存中獲取而不是硬盤中,提高了不少性能。