初學 Java MemCache 本身的總結。

 

 

 

 

 

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

相關文章
相關標籤/搜索