在實際專案中,MySQL資料庫伺服器有時會位於另外一台主機,需要透過網路存取資料庫;即使應用程式與MySQL資料庫在同一個主機中,存取MySQL也涉及磁碟IO操作(MySQL也有一些資料預讀技術,能夠減少磁碟IO讀寫,此部分後續繼續研究)。
總之,直接從MySQL讀取資料不如直接從記憶體讀取資料來的效率高。為了提高資料庫存取效率,人們採用了各種各樣的方法,其中方法之一就是使用一個給予記憶體的快取系統放置在資料庫和應用程式之間。 (建議學習:Redis影片教學)
在尋找資料的時候,先從記憶體中尋找,如果找到則使用,如果沒有找到,那麼再真正存取資料庫。這種方法在一些場景下(例如:頻繁地尋找相同資料)能夠提高系統的整體效率。
採用redis nosql資料庫作為Mysql資料庫的緩存,在尋找的時候,首先查找redis緩存,如果找到則返回結果;如果在redis中沒有找到,那麼就找Mysql資料庫,找到的花則傳回結果並且更新redis;如果沒有找到則回傳空。
對於寫入的情況,直接寫入mysql資料庫,mysql資料庫透過觸發器及UDF機制自動把變更的內容更新到redis中。
框圖:
#讀取步驟:
1. client讀取redis,如果命中返回結果,如果沒有命中轉到2.
2. client讀取資料庫,在資料庫中沒有查到,返回空;在資料庫中查到了,返回查到的結果並更新Redis。
寫入步驟:
1. client修改/刪除或新增資料到MySQL。
2. MySQL的觸發器呼叫使用者自訂的UDF。
3. UDF把修改/刪除或新增的資料更新到redis中。
以上是redis怎麼做mysql緩存的詳細內容。更多資訊請關注PHP中文網其他相關文章!