淺談thinkPHP中利用緩存處理高並發的思路


此內容如有問題,請多多指教



Thinkphp默認各類緩存都是以文件緩存的

改的話在配置文件里改

'DATA_CACHE_TYPE'       =>  'File',  // 數據緩存類型,支持:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator

 

S數據緩存與F快速緩存最大的區別是:

 

S能設置緩存有效時間,來刪除自動緩存數據

而F不能設置只能強制刪除
F('data',NULL);S同理一樣強制刪S('data',NULL)
查詢緩存cache默認是true即開啟了緩存的
   注意:當向數據庫發送不同數據庫時,會產生不同的查詢緩存文件,
 

          M('admin')->cache()->where()->select();

      M('admin')->cache()->where()->select();像數據庫發送相同同數據庫時只產生一條查詢緩存文件,

          M('admin')->cache()->where()->select();

      M('admin')->cache()->where()->find();
 

 

處理高並發解決方案:

當我們網站訪問量大了的時候,解決卡頓問題,

 

方法1:可以從數據庫着手,運用主從式分布式數據庫分配用戶請求數據庫地址,(上了百萬級同理),

假如在線用戶有10w人平均每一個人1秒鍾向數據庫發送3條數據庫那么就有30萬數據發送數據庫,

SQL的量可能會非常巨大,所以有必要設置下緩存的隊列長度,例如,我們希望SQL解析緩存不超過5000條記錄,可以設置:

1. 'DB_SQL_BUILD_LENGTH' => 5000, // SQL緩存的隊列長度
2. 然后分配到各個數據中從而減輕了服務器的壓力

方法二 從服務器端運用nginx配置服務器,(負載均衡)具體有待完善

 

 

方法3假如有100000用戶同時在我們p2p平台借款(其中可能會出現一小部分用戶卡頓借款失敗),為了解決其中出現的的問題,

我們可以設置兩個線程:

1.    主線程正常執行所有用戶的請求

2.    把所有用戶全部放到事務隊列處理,副線程只用來—>讀事務隊列的結果集

提高用戶體驗



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com