首頁 > 資料庫 > Redis > 主體

redis怎麼實現緩存

(*-*)浩
發布: 2019-11-20 13:08:56
原創
7125 人瀏覽過

redis怎麼實現緩存

redis實作快取大致為兩個措施:

一、腳本同步:       

# 1.自己寫腳本將資料庫資料寫入redis/memcached。 (推薦學習:Redis視訊教學

2、這就涉及到即時資料變更的問題(mysql row binlog的即時分析),binlog增量訂閱Alibaba 的canal ,以及緩存層資料遺失/失效後的資料同步復原問題。

二、業務層實作:

1、先讀取nosql快取層,沒有資料再讀取mysql層,並寫入資料到nosql。

2、nosql層做好多節點分佈式(一致性hash),以及節點失效後替代方案(多層hash尋找相鄰替代節點),和資料震盪恢復了。

redis實作資料庫快取的分析:

對於變化頻率非常快的資料來說,如果也選擇傳統的靜態快取方式(Memocached、File System等)展示數據,可能在快取的存取上會有很大的開銷,並不能很好的滿足需要,而Redis這樣基於記憶體的NoSQL資料庫,就非常適合擔任即時數據的容器。

但往往又有資料可靠性的需求,採用MySQL作為資料存儲,不會因為記憶體問題而造成資料遺失,同時也可以利用關聯式資料庫的特性來實現許多功能。所以就會很自然的想到是否可以採用MySQL作為資料儲存引擎,Redis則是作為Cache。

MySQL到Redis資料複製方案,無論MySQL或Redis,自身都帶有資料同步的機制,比較常用的MySQL的Master/Slave模式,就是由Slave端分析Master的binlog來實現的,這樣的資料複製其實還是一個非同步過程,只不過當伺服器都在同一內部網路時,異步的延遲幾乎可以忽略。

那麼理論上也可用同樣方式,分析MySQL的binlog檔案並將資料插入Redis。

因此這裡選擇了一種開發成本更加低廉的方式,借用已經比較成熟的MySQL UDF,將MySQL資料先放入Gearman中,然後透過一個自己寫的PHP Gearman Worker,將資料同步到Redis。比分析binlog的方式增加了不少流程,但是實現成本更低,更容易操作。

以上是redis怎麼實現緩存的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!