安裝篇請參考
最近研究memcache小有成果,把經驗分享出來。
白話:很早就聽說memcache了,一直沒搞懂,後來又看到redis很火,可以用來做快取,研究了半天也沒搞懂咋個做快取,後來也不糾結了,繼續學習python,當對python基礎有一定掌握後,漸漸明白如何用redis或memcache做資料庫的快取。原理很簡單,memcache和redis都是在記憶體開闢一堆空間,用鍵-》值來儲存資料,在python稱作字典,具體流程如此圖
當使用者第一次通過web應用程式,去讀取資料庫,返回資料值的時候,web應用伺服器會做兩個動作,第乙個動作,返回給使用者,第二個動作會寫入memcache,當第二個使用者去訪問相同的資料時,程式**前新增if判斷語句,如果memcache有需要的資料,直接從memcache取。
可能表達的還不夠清楚,我們通過**來測試下。我用的環境是python+django
----查詢**
def sql(request):
#連線memcache
mc = memcache.client(['127.0.0.1:1111'])
#用sql查詢語句作為memcahe的鍵
key2 = 'select * from zuoze'
key2 = md5(key2)
#資料庫查詢zuoze表的資料
sql1 = "select * from zuoze"
#判斷sql鍵有沒有在memcache,就從mysql取資料,並寫入memcache
if not mc.get(key2):
#import mysqldb
#連線mysql資料庫
db = mysqldb.connect('127.0.0.1','admin','wanwan','t')
cursor = db.cursor()
cursor.execute(sql1)
#繫結sql資料到變數results
results = cursor.fetchall()
#同時把sql查詢資料,寫入memcache
mc.set(key2,results)
print "go mysql!!"
db.close()
return render_to_response("sql.html",)
#直接從memcache取資料
else:
results = mc.get(key2)
print "go memcache!!!"
return render_to_response("sql.html",)
--更新快取的兩種辦法,轉至論壇高手的回答:
---實驗用的第一種。
def upsql(request):
if request.method == 'post':
xing = request.post.get('xing',none)
name = request.post.get('name',none)
mail = request.post.get('email',none)
shuji_id = request.post.get('mail',none)
db = mysqldb.connect('127.0.0.1','admin','wanwan','t')
cursor = db.cursor()
sql = "insert into zuoze(id,xing,name,email,shuji_id) values ('','%s','%s','%s','%s')" % (xing,name,mail,shuji_id)
cursor.execute(sql)
db.commit()
#插入資料或更新資料後,重新更新memcache資料
本文出自 「
自動運維」 部落格,請務必保留此出處
用memcached做實時分頁快取
用memcached做分頁快取,可能很多人會覺得麻煩而不用。因為在增加 修改 刪除的過程中,你不知道會影響到哪些資料,而如果把所有分頁相關的資料快取都刪除並重新生成一遍,實現又很麻煩,甚至不可行,所以乾脆就用mysql直接分頁,簡單方便,但是這樣效能卻也下降了。本章就講乙個簡單的實現用memcach...
mysql資料庫如何做快取 MySql資料庫快取
對mysql查詢快取及sql server過程快取的理解及總結 一 mysql的query cache 1 query cache mysql query cache是用來快取我們所執行的select語句以及該語句的結果集。mysql在實現query cache的具體技術細節上類似典型的kv儲存,就...
資料庫快取
用資料庫 將要儲存的nsarray 或 nsdictionary 物件 轉為nsdata型別。再將nsdata存到資料庫的blob中。若將nsarray直接存到資料庫 那麼資料庫中儲存的是 nsstring型別的資料而不是nsarray物件本身,因此要轉為nsdata型別。方法如下 將oc物件轉為n...