国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

實例講解分布式緩存軟件Memcached的Java客戶端使用

2019-11-26 14:39:01
字體:
來源:轉載
供稿:網友

Memcached介紹
下面就來介紹一下Memcached。

1、什么是Memcached

Memcached是一個開源的高性能,分布式的內存對象緩存系統,通過鍵值隊的形式來對數據進行存取,Memcached是簡單而強大,它的簡單設計促進快速部署,易于開發,解決了大數據緩存面臨的許多問題。


官方網址是:http://memcached.org/,目前已經有很多知名的互聯網應用使用到了Memcached,比如Wikipedia、Flickr、Youtube、Wordpress等等。

2、下載Windows平臺下的MemCached,地址為:

http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip

對應的源碼地址為:

http://code.jellycan.com/files/memcached-1.2.6-win32-src.zip

然后,解壓開來,會看到一個memcached.exe文件,進行如下圖的安裝,將以系統服務的形式安裝到機上

201612884432922.png (611×67)

然后查看系統服務,會發現已經可以看到memcached服務了

201612884535551.png (564×22)

然后,選中此服務點鼠標右鍵,啟動此服務。

在DOS界面中輸入:telnet 127.0.0.1 11211來確認服務是否啟動無誤,如果無誤,則會顯示如下窗口:

201612884558119.png (527×158)

上面圖中顯示的ERROR是我隨便輸入字符后按回車顯示的,這是因為你需要安裝memcached規定的協議來進行輸入,否則就顯示如上所示錯誤。

3、 memcached的協議與數據存取

所謂協議,可以理解為對其操作(數據存取)的語法規則,存取數據的常用命令和參數如下:

set:存入一條記錄

key:記錄的鍵值

flags:十進制的int,標識存儲記錄時的客戶端標志,在記錄取出時會返回。

exptim:數據的過期時間,0表示不過期,其他數值則表示有效的毫秒數,在過期后,客戶端將取不到這條記錄,memcached中的過期記錄會被清空或刪除。

get:表示從memcached取出key對應的值,如果沒有對應的值則返回結束標志END

append:表示對key所對應的值在最后再加入輸入的內容

delete:刪除key對應的值

更多協議可參考:memcached包中所帶的protocol.txt

具體例子如:

需要注意的是:在set時如果指定的字符長度為5,而輸入的內容超過了這個長度,那么就會報錯:CLIENT_ERROR bad data chunk

201612884616088.png (532×334)

4、 編寫代碼對memcached進行數據存取操作

一般而言,可以使用開源已封裝好的memcached客戶端來對memcached進行操作,當然你也可以根據memcached的協議在代碼中通過編寫socket通信程序實現。

Memcached-Java-Client的下載頁面:

http://github.com/gwhalin/Memcached-Java-Client/downloads,然后選擇下載:

java_memcached-release_2.5.1.zip

在解壓開的Test目錄中可以看到有些寫好的例子,可以通過運行com.danga.MemCached.test. TestMemcached來查看數據存入和取出情況,這里也貼出其代碼:

package com.danga.MemCached.test;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;import org.apache.log4j.*;public class TestMemcached {public static void main(String[] args) {// memcached should be running on port 11211 but NOT on 11212BasicConfigurator.configure();//緩存服務器地址,多臺服務器則以逗號隔開,11211為memcached使用的端口號String[] servers = { “localhost:11211″ };//得到一個鏈接池對象并進行一些初始化工作SockIOPool pool = SockIOPool.getInstance();pool.setServers( servers );pool.setFailover( true );pool.setInitConn( 10 );pool.setMinConn( 5 );pool.setMaxConn( 250 );//pool.setMaintSleep( 30 );pool.setNagle( false );pool.setSocketTO( 3000 );pool.setAliveCheck( true );pool.initialize();MemCachedClient mcc = new MemCachedClient();// turn off most memcached client logging://Logger.getLogger( MemCachedClient.class.getName() ).setLevel( com.schooner.MemCached.Logger. );//以下是數據寫入和取出操作例子for ( int i = 0; i < 10; i++ ) {boolean success = mcc.set( “” + i, “Hello!” );String result = (String)mcc.get( “” + i );System.out.println( String.format( “set( %d ): %s”, i, success ) );System.out.println( String.format( “get( %d ): %s”, i, result ) );}System.out.println( “/n/t ― sleeping 

主站蜘蛛池模板:
九台市|
建始县|
南昌市|
云林县|
光山县|
高邮市|
罗源县|
黔江区|
赣州市|
南康市|
邹城市|
库尔勒市|
响水县|
翁牛特旗|
武汉市|
双牌县|
广东省|
科技|
雅江县|
克山县|
曲靖市|
台北市|
黎平县|
昔阳县|
太仓市|
中宁县|
英吉沙县|
湟中县|
渭源县|
黄骅市|
法库县|
昌图县|
威远县|
永胜县|
铅山县|
鄯善县|
玉田县|
五河县|
汶川县|
甘谷县|
肃北|