初學redis,想瞭解一下redis+mysql的一些基本應用,一些解決方案,比如最常用的做緩衝機制,一般怎麼去實現呢?
回複內容:
初學redis,想瞭解一下redis+mysql的一些基本應用,一些解決方案,比如最常用的做緩衝機制,一般怎麼去實現呢?
redis做緩衝放在php和mysql之間,就是利用了redis基於記憶體的高速資料讀取特性,也是就是說,對於某些資料,當使用者來訪問你的web頁面的時候,你先去從redis裡面取出來,如果沒有,再去從mysql取,展示給使用者,同時寫入redis,以便下次就能在redis裡面取到了。
虛擬碼:
$name = Redis::get('name');if( !$name ){ //緩衝穿透,在Mysql取出並寫入redis $name = Mysql::select('name'); Redis::set('name',$name);}//...other code
以上其實就是大多數僅僅拿redis來做緩衝的大概原理。
當然,基於redis豐富的資料結構,還有很多其他使用者,建議查閱相關教程或者文檔。
redis我一般用來存session和快取資料。session很好處理,不說了,說下資料緩衝怎麼做,最近看yii
才學到的。
對於一張表的資料,假設有個last_mod_time
欄位,每次有資料更新的時候就必須同時更新這個時間,在查詢表中資料的時候,先
select avg(last_mod_time) from table where ...
看看這個同樣條件的集合,avg是不是變了,如果沒變,直接從redis裡面取得快取資料,起到緩衝作用。如果avg變了,那麼將資料從mysql
中查出來,並且根據where約束產生一個key
,value
就是資料集,這樣的
儲存進redis。大致就是這麼個思路。
不要害怕,和普通架構是一樣的。
就是在php與mysql層面中間加多一個cache緩衝。
Redis自己的例子就給了不少應用。不同的API可以幫你做view,函數,手動等各個層級的cache。另外我用PostgreSQL,可以設定SQL查詢自動cache,MySQL應該也可以。
將中文寫入的redis中再讀取的時候顯示?