使用Memcache緩存mysql數(shù)據(jù)庫操作的原理和緩存過程淺析
對于大型網(wǎng)站如facebook,ebay等網(wǎng)站,如果沒有Memcache做為中間緩存層,數(shù)據(jù)訪問不可能吃得消,對于一般網(wǎng)站,只要具備獨(dú)立的服務(wù)器,完全可以通過配置Memcache提高網(wǎng)站訪問速度和減少數(shù)據(jù)庫壓力,這里主要討論一下Memcache和MySQL數(shù)據(jù)庫交互過程的流程關(guān)系,了解Memcache的中間緩存層作用,從而深入了解Memcache機(jī)制原理。
Memcache和MySQL交互流程圖
如上圖,傳統(tǒng)的查詢方法是直接查詢數(shù)據(jù)庫,數(shù)據(jù)庫將結(jié)果返回給查詢語句,而當(dāng)有Memcache中間緩存層時,查詢的是Memcache緩存數(shù)據(jù),下面詳細(xì)了解Memcache各類數(shù)據(jù)操作原理:
1. 查詢數(shù)據(jù)(select),首先通過指定的Key查詢(get)Memcache中間緩存層數(shù)據(jù),如果存在相對應(yīng)數(shù)據(jù),則直接獲取出數(shù)據(jù)結(jié)果,查詢過程完全不需要查詢數(shù)據(jù)庫。如果不存在,則查詢MySQL數(shù)據(jù)庫,并以key對應(yīng)value的形式將查詢結(jié)果存儲在Memcache緩存數(shù)據(jù)中,然后將結(jié)果返回給查詢語句。
2. 更新數(shù)據(jù)(update),首先更新數(shù)據(jù),然后刪除相關(guān)的memcache數(shù)據(jù)(delete)。
3. 增加數(shù)據(jù)(add),首先刪除相關(guān)緩存數(shù)據(jù),然后增加數(shù)據(jù)。
4. 刪除數(shù)據(jù)(delete),刪除數(shù)據(jù),并刪除Memcache數(shù)據(jù)。
對MySQL的數(shù)據(jù)操作,主要涉及到的Memcache方法如下:
1. 獲?。篻et(key)
2. 設(shè)置:set(key, value [, expiry])
3. 刪除:delete(key [, time])
實(shí)例:
假設(shè)一個貼子,獲取貼子ID為2009的值,其Memcache與MySQL交互流程如下:
$key = ‘biuuu_thread_';//key前綴
$cachetime = 100;//緩存有效時間(秒)
$id = 2009;
Memcache基本操作過程
1. 查詢:$result = get($key.$id);如果$result為空,則查詢MySQL數(shù)據(jù)庫,然后set($key.$id,$value,0,$cachetime)
2. 更新:delete($key.$id);
3. 增加:delete($key.$id);
4. 刪除:delete($key.$id);
通過直觀圖和實(shí)例應(yīng)該對Memcache與MySQL的交互有一個基礎(chǔ)的掌握,其實(shí)對于應(yīng)用來說,基本上就已經(jīng)足夠,但如果要涉及到命名空間等相對復(fù)雜的情況,Memcache的操作方式會有所不同,但不管什么樣的操作,還是離不開基礎(chǔ)操作命令,由于這是Memcache基礎(chǔ)篇,主要是討論Memcache和mysql交互操作流程,當(dāng)Memcache原理清楚以后,Memcache基本操作就是這么簡單。
- MySQL的查詢緩存和Buffer Pool
- mysqldump造成Buffer Pool污染的研究
- MySQL和Redis實(shí)現(xiàn)二級緩存的方法詳解
- redis服務(wù)器環(huán)境下mysql實(shí)現(xiàn)lnmp架構(gòu)緩存
- mysql select緩存機(jī)制使用詳解
- MySQL緩存的查詢和清除命令使用詳解
- PHP使用redis實(shí)現(xiàn)統(tǒng)計緩存mysql壓力的方法
- MySQL高速緩存啟動方法及參數(shù)詳解(query_cache_size)
- 清空mysql 查詢緩存的可行方法
- 詳解MySQL中的緩沖池(buffer pool)
相關(guān)文章
MySQL進(jìn)階查詢、聚合查詢和聯(lián)合查詢
這篇文章主要介紹了MySQL數(shù)據(jù)庫的進(jìn)階查詢,聚合查詢及聯(lián)合查詢,文中有詳細(xì)的代碼示例,需要的朋友可以參考閱讀2023-04-04Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法
這篇文章主要給大家介紹了關(guān)于Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01MyEclipse連接MySQL數(shù)據(jù)庫圖文教程
這篇文章主要為大家詳細(xì)介紹了MyEclipse連接MySQL數(shù)據(jù)庫圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10C#如何在海量數(shù)據(jù)下的高效讀取寫入MySQL
這篇文章主要介紹了C#如何在海量數(shù)據(jù)下的高效讀取寫入MySQL的相關(guān)資料,需要的朋友可以參考下2016-12-12mysql 8.0.12安裝配置方法圖文教程(Windows版)
這篇文章主要為大家詳細(xì)介紹了Windows下mysql 8.0.12安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-08-08mysql 獲取昨天日期、今天日期、明天日期以及前一個小時和后一個小時的時間
這篇文章主要介紹了mysql 獲取昨天日期、今天日期、明天日期以及前一個小時和后一個小時的時間,需要的朋友可以參考下2018-01-01