一、memcache緩存的是什么數(shù)據(jù)又是怎么寫入的
首先明確,memcache是作為高速緩存使用的。
那么,到底怎樣才能獲得高速的響應(yīng)呢?當(dāng)然如果是簡(jiǎn)單處理的話,利用關(guān)系型數(shù)據(jù)庫的索引也能獲得高速響應(yīng)。雖然memcached會(huì)更快一些,但如果合理地使用索引,關(guān)系型數(shù)據(jù)庫就足夠快了。
mysql 通常是有一個(gè)主鍵,一行記錄里有一個(gè)可以標(biāo)注”身份”的值。mc 是 kv 形式的內(nèi)存數(shù)據(jù)庫,使用mc的意義就是高速讀取,防止對(duì)mysql的讀取量過大造成各種問題。存mc時(shí)候通常把mysql的主鍵作為key,value可以是一個(gè)數(shù)據(jù)(mysql的一行做一個(gè)關(guān)聯(lián)數(shù)據(jù)),也可以把mysql的一條記錄做json_encode,當(dāng)作一個(gè)string進(jìn)行緩存。
但是如果要對(duì)多個(gè)表的數(shù)據(jù)進(jìn)行計(jì)算,情況又會(huì)怎樣呢?若使用關(guān)系型數(shù)據(jù)庫,我們需要從每個(gè)表中取出數(shù)據(jù)然后進(jìn)行最后的組合處理,或者每次都要使用JOIN等處理。雖然我們可以通過事前用批處理制作數(shù)據(jù)來解決這個(gè)問題,但是這樣又會(huì)增加需要管理的表,花費(fèi)我們更多的精力。
延伸閱讀:
二、MemCache是什么
MemCache是一個(gè)自由、源碼開放、高性能、分布式的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫的負(fù)載。它通過在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來減少讀取數(shù)據(jù)庫的次數(shù),從而提高了網(wǎng)站訪問的速度。MemCaChe是一個(gè)存儲(chǔ)鍵值對(duì)的HashMap,在內(nèi)存中對(duì)任意的數(shù)據(jù)(比如字符串、對(duì)象等)所使用的key-value存儲(chǔ),數(shù)據(jù)可以來自數(shù)據(jù)庫調(diào)用、API調(diào)用,或者頁面渲染的結(jié)果。MemCache設(shè)計(jì)理念就是小而強(qiáng)大,它簡(jiǎn)單的設(shè)計(jì)促進(jìn)了快速部署、易于開發(fā)并解決面對(duì)大規(guī)模的數(shù)據(jù)緩存的許多難題,而所開放的API使得MemCache能用于Java、C/C++C#、Perl、Python、PHP、Ruby等大部分流行的程序語言。