<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 262,  comments - 221,  trackbacks - 0

    【1】Memcached是使用基于Key-value值對形式的內(nèi)存緩沖,它不是使用磁盤緩沖來充當(dāng)緩沖,而是使用實實在在的物理內(nèi)存。

    【2】Memcached需要在啟動時就指定分配的內(nèi)存大小。命令如:memcached -d -m 內(nèi)存大小(M為單位) -l IP地址 -p 端口

    【3】Memcached是一種單索引的結(jié)構(gòu)化數(shù)據(jù)組織形式,所有數(shù)據(jù)項之間彼此獨立(不想傳統(tǒng)的數(shù)據(jù)是關(guān)系型的),每個數(shù)據(jù)項都以key為唯一索引,不要以關(guān)系型的思維來對待緩存

    【4】Memcached使用基于key的hash算法來存儲數(shù)據(jù),查詢的時間復(fù)雜度達到O(1)

    【5】Memcached使用LRU算法來淘汰緩沖數(shù)據(jù)項,但同時允許使用者設(shè)定緩存過期時間,這個時間需要根據(jù)測試而定

    【6】Memcached使用libevent函數(shù)庫來實現(xiàn)網(wǎng)絡(luò)并發(fā)模型,支持較大并發(fā)用戶數(shù)環(huán)境下的緩存操作

    【7】Memcached使用對象序列化技術(shù),可以把對象序列化成二進制數(shù)據(jù),在網(wǎng)絡(luò)中傳輸

    【8】Memcached可以和JSON格式結(jié)合,把內(nèi)存中對象以JSON形式表示,然后序列化為字符串后緩存起來

    【9】Memcached的客戶端API可以支持直接把對象保存到緩存中,也可以直接從緩存中取出對象,隱藏了轉(zhuǎn)換的細節(jié)

    【10】使用Memcached的一個核心問題就是:什么內(nèi)容是可以緩存的?什么是沒有必要實時發(fā)生的

    【11】不要在Memcached上使用鎖來防止線程競爭,而是使用其提供的原子遞增操作

    【12】Memcached的狀態(tài)參數(shù)中:total_items、bytes、get_hits、bytes_read、bytes_written、limit_maxBytes都是很常用的參考數(shù)據(jù)

    【13】Memcached的狀態(tài)中,要關(guān)注的有空間使用率、緩存命中率、IO流量

    【14】Memcached的緩存數(shù)據(jù)分區(qū),最好不要基于業(yè)務(wù)數(shù)據(jù)內(nèi)容種類,而是采用和業(yè)務(wù)無關(guān)的分區(qū)算法,否則容易造成負載不平衡

    【15】Memcached擴展后,需要在前端通過一個“緩存連接器”來根據(jù)散列算法分配緩存數(shù)據(jù)

    【16】Memcached的數(shù)據(jù)理論上都來自于底層的持久化資源,所以當(dāng)緩存擴展后,可以清除它。前提是必要的數(shù)據(jù)已經(jīng)持久化了

    【17】緩存不是持久化設(shè)施,不要用持久化的理念去對待緩存中的數(shù)據(jù)。它本來就已經(jīng)存在對應(yīng)的持久化資源了

    【18】緩存中的數(shù)據(jù)最好是臨時性數(shù)據(jù)(無必要持久化,而只是作為流程控制用)或者已經(jīng)有對應(yīng)的持久化資源存在的(必要時可以重建)

    【19】Memcached采用的是“塊分配”的內(nèi)存分配模式,同時對key的限制是250字節(jié),對value的限制是1M大小

    【20】Memcached采用是偷懶替代法,不會開額外的進程來實時監(jiān)測過時的kv對并刪除,而是當(dāng)且僅當(dāng),新來一個插入的數(shù)據(jù),而此時又沒有多余的空間放了,才會進行清除動作。

    【21】一旦數(shù)據(jù)庫的數(shù)據(jù)發(fā)現(xiàn)變化,我們一定要及時更新cache中的數(shù)據(jù),來保證app讀到的是同步的正確數(shù)據(jù)。當(dāng)然我們可以通過定時器方式記錄下cache中數(shù)據(jù)的失效時間,時間一過就會激發(fā)事件對cache進行更新,但這之間總會有時間上的延遲,導(dǎo)致app可能從cache讀到臟數(shù)據(jù),這也被稱為狗洞問題。

    【22】當(dāng)一個ms上丟失了數(shù)據(jù)之后,app還是可以從數(shù)據(jù)庫中取得數(shù)據(jù)。不過更謹慎的做法是在某些ms不能正常工作時,提供額外的ms來支持cache,這樣就不會因為app從cache中取不到數(shù)據(jù)而一下子給數(shù)據(jù)庫帶來過大的負載。

    【23】有了緩存的支持,我們可以在傳統(tǒng)的app層和db層之間加入cache層,每個app服務(wù)器都可以綁定一個mc,每次數(shù)據(jù)的讀取都可以從ms中取得,如果沒有,再從db層讀取。而當(dāng)數(shù)據(jù)要進行更新時,除了要發(fā)送update的sql給db層,同時也要將更新的數(shù)據(jù)發(fā)給mc,讓mc去更新ms中的數(shù)據(jù)。

    【24】為了最小化數(shù)據(jù)庫的負載壓力,我們可以部署數(shù)據(jù)庫復(fù)寫,用slave數(shù)據(jù)庫來完成讀取操作,而master數(shù)據(jù)庫永遠只負責(zé)三件事:1.更新數(shù)據(jù);2.同步slave數(shù)據(jù)庫;3.更新cache。

    【25】因為現(xiàn)在key是散列在不同的server上的,所以對某類key進行大批量清理是很麻煩的。因為memcached本身是一個大hash表,是不具備key的檢索功能的。所以memcached是壓根不知道某一類的key到底存了多少個,都存在哪些server上。而這類功能在實際應(yīng)用中卻是經(jīng)常用到。

     



    -------------------------------------------------------------
    生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
    posted on 2010-03-15 10:57 Paul Lin 閱讀(2270) 評論(0)  編輯  收藏 所屬分類: J2EE基礎(chǔ)
    <2010年3月>
    28123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    BlogJava熱點博客

    好友博客

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲天堂中文字幕| 国产一区二区免费视频| 亚洲色偷偷偷网站色偷一区| 国产一区二区三区免费在线观看| 最近中文字幕电影大全免费版| www在线观看免费视频| 亚洲中文字幕无码久久2020| 中文字幕亚洲综合久久2| 亚洲中文字幕无码不卡电影| 四虎永久免费观看| 久久这里只有精品国产免费10| 无码免费一区二区三区免费播放 | 4399好看日本在线电影免费| 中国一级全黄的免费观看| 黄页网址在线免费观看| 亚洲国产精品无码久久98| 亚洲一区免费视频| 亚洲成年人免费网站| 亚洲一区二区成人| 久久精品夜色国产亚洲av| 亚洲熟女少妇一区二区| 中文字幕第13亚洲另类| 亚洲国产精品尤物YW在线观看| 国产成人精品男人免费| 国产美女无遮挡免费视频| 永久免费av无码网站大全| 午夜毛片不卡免费观看视频| 成年女人午夜毛片免费视频| 免费电视剧在线观看| 成人黄软件网18免费下载成人黄18免费视频| 国产高清不卡免费在线| 91免费播放人人爽人人快乐| 四虎永久在线观看免费网站网址 | 国产精品成人无码免费| 日韩伦理片电影在线免费观看| 免费羞羞视频网站| 国产片免费在线观看| 国产乱子伦精品免费无码专区| 免费在线观看一级毛片| 亚洲国产精品碰碰| 国产午夜亚洲精品午夜鲁丝片|