MemCached 我的總結linux
1. MemCached 簡介算法
Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提升動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap,全部數據都放在儲存在內存中。數據庫
2. 使用MemCached準備緩存
Memcached 插件,Memcached徹底依賴它,在使用Memcached必須啓動這個插件。雙擊。安全
這表明 Memcached插件已經啓動成功,若是插件中止,那麼全部的內存數據將會被銷燬。服務器
3. MemCached 用到的 jar session
4. MemCached 流程socket
5. MemCached 實際使用我的思路分佈式
MemCacheUtil 負責Cache 底層操做ide
MemCacheSupport 負責調用Util 減化操做、
公共初始化數據↓
建立 公共數據類
在MemCacheUtil進行初始化
根據特殊須要↓
EntityCache 實體CacheDao
EntityCacheImpl 實體CacheDaoImpl 繼承 MemCacheSupport
6. MemCaChed 配置
服務器端口:能夠設置多個Ip,實現分佈式緩存
memcache.server=127.0.0.1:11211
緩存大小
Memcache.weights = {1}
緩衝的基本信息
初始鏈接數、最小最大鏈接數、最大處理時間
memcache.initConn=20
memcache.minConn=10
memcache.maxConn=50
線程休眠時間
memcache.maintSleep=3000
禁止使用nagle算法
memcache.nagle=false
請求緩存超時時間
memcache.socketTO=3000
當一個服務器請求超時是否去訪問另外一臺
memcache.failover=true
最大處理時間
memcache.maxidle=1000*30*30
檢查服務器是否失效
memcache.alivecheck=true
7. MemCached 主要類
Socke 鏈接池實例對象
SockIOPool
得到SockIOPoo 2 種方式
1.代碼塊
SockIOPool pool = SockIOPool.getInstance();
pool.setxxx(xxx);
pool.initialize();
2.Spring注入
MemCachedClient MemCached主要操做對象
得到MemCachedClient
得到單例對象,防止數據衝突,節省內存,根據業務需求實際狀況而定
8. MemCachedClient 方法詳解
9. MemCached 服務器
啓動Memcache 經常使用參數
-p <num> 設置端口號(默認不設置爲: 11211)
-U <num> UDP監聽端口 (默認: 11211, 0 時關閉)
-l <ip_addr> 綁定地址 (默認:全部都容許,不管內外網或者本機更換IP,有安全隱患,若設置爲127.0.0.1就只能本機訪問)
-d duli進程運行
-u <username> 綁定使用指定用於運行進程 <username>
-m <num> 容許最大內存用量,單位M (默認: 64 MB)
-P <file> 將PID寫入文件<file>,這樣可使得後邊進行快速進程終止, 須要與 -d 一塊兒使用
如:
在linux下:./usr/local/bin/memcached -d -u jb-mc -l 192.168.1.197 -m 2048 -p 12121
在window下:d:\App_Serv\memcached\memcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500
telnet鏈接以及請求命令
須要保證 Memcached 服務已打開。
鏈接成功
telnet寫入memcache命令格式
<command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n
1.<command name> 能夠是」set」, 「add」, 「replace」
2.<key> 保存數據的key
3.<flags> 是一個16位的無符號的整數(以十進制的方式表示)。
4.<exptime> 過時的時間。0表示存儲的數據永遠不過期
5.<bytes> 須要存儲的字節數 ,當用戶但願存儲空數據時,能夠爲0
6.最後客戶端須要加上」\r\n」做爲」命令頭」的結束標誌。
telnet響應命令
1.STORED 表示存儲成功
2.NOT_STORED 表示存儲失敗,可是該失敗不是因爲錯誤
其餘操做命令方法同上
Telnet 其餘命令
Stats 狀態
stats reset 清空統計數據
Flush_all 清空數據
Quit 退出telnet
10. MemCached 應用場景
適用於 MemCached ↓
a.若是網站包含了訪問量很大的動態網頁,於是數據庫的負載將會很高。因爲大部分數據庫請求都是讀操做,那麼memcached能夠顯著地減少數據庫負載。
b.利用memcached能夠緩存 session數據 、臨時數據以減小對他們的數據庫寫操做。
c.緩存一些很小可是被頻繁訪問的文件。
不適用 MemCached ↓
a.緩存對象的大小大於1MB
b. key的長度大於250字符
c.應用運行在不安全的環境中
Memcached未提供任何安全策略,僅僅經過telnet就能夠訪問到memcached。若是應用運行在共享的系統上,須要着重考慮安全問題。
d.業務自己須要的是持久化數據或者說須要的應該是database