memcache容量用完會怎麼樣?

滿了之後不會重啓,會讓舊的數據失效,memcached滿了會利用LRU算法讓很久沒使用過的記錄失效,新的記錄會替換失效的記錄,但是因爲memcached是根據存入記錄的大小根據hash算法映射到某一個內存分片上(SLAB),所以很可能會出現如果存的數據都是等長的,比如登陸session信息、驗證碼信息之類的,memcached會只存在某一個slab中,而每一個slab中的page數量是有限制的,當超過之後memcached就在這個slab種執行LRU算法,淘汰舊的記錄,所以很有可能你分給memcached了100M的內存空間,但是可能某個slab中只用掉了很少,但是新數據寫入後還是要在這個slab中進行LRU,舊的數據還是會丟失,內存卻浪費了很多沒用,所以如果所存的數據有命中率要求,不能接受丟失數據的情況,那這種就會有問題了,如果是等長的數據可能需要對源代碼進行修改,使之適合存放等長數據。


轉自:http://bbs.phpchina.com/thread-217512-1-1.html點擊打開鏈接


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章