《Redis與Mysql數(shù)據(jù)同步》要點(diǎn):
本文介紹了Redis與Mysql數(shù)據(jù)同步,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
Redis 是一個(gè)高性能的key-value數(shù)據(jù)庫(kù). redis的出現(xiàn),很大程度上補(bǔ)償了memcached這類(lèi)key-value存儲(chǔ)的不足,在部分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用.
它提供了Python,Ruby,Erlang,PHP客戶(hù)端,使用很方便.
由于游戲服務(wù)器數(shù)據(jù)更新頻繁,如果每次讀寫(xiě)數(shù)據(jù)會(huì)造成讀寫(xiě)數(shù)據(jù)庫(kù)的壓力大,效率低.
一般使用redis的場(chǎng)景如下:
首先,程序先去redis中判斷數(shù)據(jù)是否存在:
如果存在,則直接返回緩存好的數(shù)據(jù).
如果不存在的話(huà),就會(huì)去數(shù)據(jù)庫(kù)中,讀取數(shù)據(jù),并把數(shù)據(jù)緩存到Redis中.
適用場(chǎng)合:如果數(shù)據(jù)量比較大,但不是經(jīng)常更新的情況(比如用戶(hù)排行).
此外,redis的使用還有以下場(chǎng)景:
首先先去redis中判斷數(shù)據(jù)是否存在:
如果存在,則直接更新對(duì)應(yīng)的數(shù)據(jù),并把更新后的數(shù)據(jù)返回給頁(yè)面.
而如果不存在的話(huà),就會(huì)去先更新數(shù)據(jù)庫(kù)中內(nèi)容,然后把數(shù)據(jù)保存一份到Redis中.
后臺(tái)會(huì)有Linux的contrab定時(shí)任務(wù)機(jī)制把Redis中的save_update_keys存儲(chǔ)的key,分別讀取出來(lái),找到對(duì)應(yīng)的數(shù)據(jù),更新到DB中.
優(yōu)點(diǎn):這個(gè)流程的主要目的是把Redis當(dāng)作數(shù)據(jù)庫(kù)使用,更新獲取數(shù)據(jù)比DB快.非常適合大數(shù)據(jù)量的頻繁變動(dòng)(比如用戶(hù)游戲數(shù)據(jù)).
缺點(diǎn):對(duì)Redis的依賴(lài)很大,要做好宕機(jī)時(shí)的數(shù)據(jù)保存.(不過(guò)可以使用redis的快照AOF,快速恢復(fù)的話(huà),應(yīng)該不會(huì)有多大影響,因?yàn)榫退鉘edis不工作了,也不會(huì)影響后續(xù)數(shù)據(jù)的處理.)
難點(diǎn):在前期規(guī)劃key的格式,存儲(chǔ)類(lèi)型很重要,因?yàn)檫@會(huì)影響能否把數(shù)據(jù)同步到DB.
其中第二種方式是游戲服務(wù)器中經(jīng)常使用的方式,例如將用戶(hù)的游戲數(shù)據(jù)以hashset的形式存儲(chǔ)到redis中,實(shí)時(shí)更新效率比拜訪數(shù)據(jù)庫(kù)的效率高.根據(jù)定時(shí)任務(wù)將更新的數(shù)據(jù)存入數(shù)據(jù)庫(kù)中,做到永久保存.
歡迎參與《Redis與Mysql數(shù)據(jù)同步》討論,分享您的想法,維易PHP學(xué)院為您提供專(zhuān)業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/9215.html