最近公司老大抱怨,產品某部分內容訪問速度奇慢無比,由於是之前接手的別人的代碼,不太清楚業務的具體邏輯,不過,經過查看,內容為無需實時更新的內容,so 直接上緩存。
什么是緩存?
對於后端來說,要做的基本就是接收請求,返回數據,而在返回數據的過程中,我們要對數據庫進行查詢操作,找到正確的 請求內容,如果要查找的數據量比較大,每次請求的耗時將會是一個非常可怕的事情。這個時候,我們就需要對某些無需實 時更新的內容進行緩存處理,把要返回的內容存放在緩存中,收到數據請求后直接把緩存中的數據返回,如果緩存不存在, 則查詢數據庫,並且把內容添加進緩存中,以便下次請求。
緩存中應該放置什么內容?
緩存的存在,雖然給我們的訪問速度帶來了提升,但緩存並不是適用於任何場合,個人理解,對於一些無需實時更新,並且 數據量較大或者查詢速度教慢的,可以使用緩存操作。
Django的緩存機制。
在django中,存在多種緩存機制,例如:利用本地內存進行緩存,利用文件系統進行緩存、利用數據庫進行緩存等緩存芳 式。
利用數據庫進行緩存。
由於Redis這種Key/value的存儲方式,使得它很適合做緩存數據庫,而django也對Redis有着非常好的支持,所以這里我選 擇了使用Redis。
首先,安裝Redis數據庫。操作非常簡單,使用命令進行安裝 #sudo apt-get install redis-server(win下可以選擇下載相應的 安裝包)。
然后,就是緩存的主角,django-redis (http://django-redis-chs.readthedocs.io/zh_CN/latest/#id2) 具體內容可在官方文檔 查看。
Django的配置相關:

如果你是第一次使用Redis,並且是第一次使用django-redis 那么,上面的配置就是你要添加進setting里的內容。
配置完成后,我們就要對想要進行緩存的數據代碼進行緩存處理了。

這是一個get請求函數,在請求里,我們首先定義一個key,這個也是我們存儲在redis數據庫中的key的名字(可以根據需要 隨意設置)。然后就是獲取key 使用cache.get 嘗試獲取key 如果key存在,則返回key里面的,無需重復查詢數據庫。
如果key不存在。

在key不存在的情況下,我們可以執行對數據庫的查詢操作,然后把查詢的內容通過cache.set保存進redis。
參數為(之前聲明的key的名字,數據,過期時間)
過期時間是一個比較重要的參數,它指定了你緩存進redis數據庫中的數據的生存時間,可以視需求而定。
如果key存在。

直接返回value中的數據,結束。
運行程序后,我們可以通過redis-cil查看我們的數據是否緩存成功。

如果數據存在,則輸入keys * 會出現你聲明的key的名字。
此外,我們還可以通過ttl [key name] 來查看我們的緩存的生存時間等,具體可參考redis使用教程。
普通的redis緩存其實是一個相對來說簡單的事情,通過一個簡單的緩存,訪問速度確實塊了許多,可能對於緩存來說,可以做的還有更多,不過,更多的東西,要等以后變得更加強大了以后再去做了。
