memcache 知識點

memcache 知識點

MemCache是一個自由、源碼開放、高性能、分佈式的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫的負載。數據庫

memcache 基本設置

-p 監聽的端口
-l 鏈接的IP地址, 默認是本機
-d start 啓動memcached服務
-d restart 重起memcached服務
-d stop|shutdown 關閉正在運行的memcached服務
-d install 安裝memcached服務
-d uninstall 卸載memcached服務
-u 以的身份運行 (僅在以root運行的時候有效)
-m 最大內存使用,單位MB。默認64MB
-M 內存耗盡時返回錯誤,而不是刪除項
-c 最大同時鏈接數,默認是1024
-f 塊大小增加因子,默認是1.25
-n 最小分配空間,key+value+flags默認是48
-h 顯示幫助

memcached -p 11211 -u root -m 3000 -c 30720

經常使用方法

memcache::add 方法:add方法用於向memcache服務器添加一個要緩存的數據。
memcache::set 方法:set方法用於設置一個指定key的緩存內容,set方法是add方法和replace方法的集合體
memcache::replace方法: replace方法用於替換一個指定key的緩存內容,若是key不存在則返回false
memcache::flush - 清除全部緩存的數據

ps: memcache 過時時間是秒

過時時間限制

memcached的過時時間並不能隨便設置,有一個最大時限就是30天,若超過30天后,存儲時返回true,可是在取數據的時候取不到。(在取數據的時候纔去作驗證,看看數據是否失效)緩存

說到這個過時時間了,就不得不說說memcached的緩存失效策略:服務器

memcached的緩存失效策略是LRU(最近最少使用)加上到期失效策略。當向memcached存儲數據時,你可能會設置一個過時時間,能夠是永久也能夠是一段時間,可是若是一旦給memcached分配的內存使用完畢,則首先會替換掉已失效的數據,其次是最近最少使用的數據。分佈式

存儲限制

鍵被限制在 250 字符以內。數據項不能超過 1M (這個值由其內存分配機制決定的),由於這是最大的塊( slab )值。若是對數據超過1M的值進行set,則會返回FALSE。memcached

memcached默認狀況下采用了名爲Slab Allocator的機制分配、管理內存。在該機制出現之前,內存的分配是經過對全部記錄簡單地進行malloc和free來進行的。可是,這種方式會致使內存碎片,加劇操做系統內存管理器的負擔,最壞的狀況下,會致使操做系統比memcached進程自己還慢。Slab Allocator就是爲解決該問題而誕生的。Slab Allocator的基本原理是按照預先規定的大小,將分配的內存分割成特定長度的塊,以徹底解決內存碎片問題.性能

訪問限制

最大同時鏈接數由-c 設置操作系統

一致性hash(轉載)

首先求出機器節點的hash值(怎麼算機器節點的hash?ip能夠做爲hash的參數吧。。固然還有其餘的方法了),而後將其分佈到0~2^32的一個圓環上(順時針分佈)。以下圖所示:rest

相關文章
相關標籤/搜索