Memcache使用環境

2021-10-08 16:29:02 字數 1018 閱讀 1783

使用memcache的**一般流量都是比較大的,為了緩解資料庫的壓力,讓memcache作為乙個快取區域,把部分資訊儲存在記憶體中,在前端能夠迅速的進行訪問。那麼一般的焦點就是集中在如何分擔資料庫壓力和進行分布式,畢竟單台memcache的記憶體容量的有限的。我這裡簡單提出我的個人看法,未經實踐,權當參考。 

分布式應用

memcache本來支援分布式,我們客戶端稍加改造,更好的支援。我們的key可以適當進行有規律的封裝,比如以user為主的**來說,每個使用者都有user id,那麼可以按照固定的id來進行提取和訪問,比如1開頭的使用者儲存在第一台memcache伺服器上,以2開頭的使用者的資料儲存在第二胎mecache伺服器上,訪問資料都先按照user id來進行相應的轉換和訪問。 

但是這個有缺點,就是需要對user id進行判斷,如果業務不一致,或者其他型別的應用,可能不是那麼合適,那麼可以根據自己的實際業務來進行考慮,或者去想更合適的方法。 

減少資料庫壓力

這個算是比較重要的,所有的資料基本上都是儲存在資料庫當中的,每次頻繁的訪問資料庫,導致資料庫效能極具下降,無法同時服務更多的使用者,比如mysql,特別頻繁的鎖表,那麼讓memcache來分擔資料庫的壓力吧。我們需要一種改動比較小,並且能夠不會大規模改變前端的方式來進行改變目前的架構。 

我考慮的一種簡單方法: 

後端的資料庫操作模組,把所有的select操作提取出來(update/delete/insert不管),然後把對應的sql進行相應的hash演算法計算得出乙個hash資料key(比如md5或者sha),然後把這個key去memcache中查詢資料,如果這個資料不存在,說明還沒寫入到快取中,那麼從資料庫把資料提取出來,乙個是陣列類格式,然後把資料在set到memcache中,key就是這個sql的hash值,然後相應的設定乙個失效時間,比如乙個小時,那麼乙個小時中的資料都是從快取中提取的,有效減少資料庫的壓力。缺點是資料不實時,當資料做了修改以後,無法實時到前端顯示,並且還有可能對記憶體占用比較大,畢竟每次select出來的資料數量可能比較巨大,這個是需要考慮的因素。

PHP環境下memcache安裝

本次安裝環境是windows,開發環境是phpstudy 32位系統 1.2.6版本 32位系統 1.4.4版本 64位系統 1.4.4版本 32位系統 1.4.5版本 64位系統 1.4.5版本 memcached安裝 版本 1.4.5,可當作服務memcached.exe d install 安...

windows環境下memcache伺服器使用經驗

將memcache伺服器安裝包解壓到c memcached資料夾後,使用cmd命令視窗安裝。1 開始 執行 cmd 確定 2 cd c memcached 回車 3 memcached d install 回車 這步執行安裝 4 memcached d start 回車 這步執行啟動memcache...

Memcache使用教程

memcached是乙個自由開源的,高效能,分布式記憶體物件快取系統。memcached是以livejournal旗下danga interactive公司的brad fitzpatric為首開發的一款軟體。現在已成為mixi hatena facebook vox livejournal等眾多服務...