最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年01月28日 08:48:30   作者:張釗  
這篇文章主要介紹了分布式緩存軟件Memcached的Java客戶端使用,Memcached在GitHub上開源,作者用其Windows平臺下的版本進行演示,需要的朋友可以參考下

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

1、什么是Memcached

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


官方網(wǎng)址是:http://memcached.org/,目前已經(jīng)有很多知名的互聯(lián)網(wǎng)應(yīng)用使用到了Memcached,比如Wikipedia、Flickr、Youtube、Wordpress等等。

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

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

對應(yīng)的源碼地址為:

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

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

201612884432922.png (611×67)

然后查看系統(tǒng)服務(wù),會發(fā)現(xiàn)已經(jīng)可以看到memcached服務(wù)了

201612884535551.png (564×22)

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

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

201612884558119.png (527×158)

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

3、 memcached的協(xié)議與數(shù)據(jù)存取

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

set:存入一條記錄

key:記錄的鍵值

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

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

get:表示從memcached取出key對應(yīng)的值,如果沒有對應(yīng)的值則返回結(jié)束標志END

append:表示對key所對應(yīng)的值在最后再加入輸入的內(nèi)容

delete:刪除key對應(yīng)的值

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

具體例子如:

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

201612884616088.png (532×334)

4、 編寫代碼對memcached進行數(shù)據(jù)存取操作

一般而言,可以使用開源已封裝好的memcached客戶端來對memcached進行操作,當然你也可以根據(jù)memcached的協(xié)議在代碼中通過編寫socket通信程序?qū)崿F(xiàn)。

Memcached-Java-Client的下載頁面:

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

java_memcached-release_2.5.1.zip

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

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 11212

BasicConfigurator.configure();

//緩存服務(wù)器地址,多臺服務(wù)器則以逗號隔開,11211為memcached使用的端口號

String[] servers = { “l(fā)ocalhost: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. );

//以下是數(shù)據(jù)寫入和取出操作例子

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 –\n” );

try { Thread.sleep( 10000 ); } catch ( Exception ex ) { }

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 ) );

}

}

}

MemCached的java客戶端實例

package com.danga.MemCached.test; 
 
import com.danga.MemCached.*; 
public class TestMemcached { 
 public static void main(String[] args) { 
  /*初始化SockIOPool,管理memcached的連接池*/ 
  String[] servers = { "192.168.105.217: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實例*/ 
  MemCachedClient memCachedClient = new MemCachedClient(); 
  for (int i = 0; i < 10; i++) { 
   /*將對象加入到memcached緩存*/ 
   boolean success = memCachedClient.set("" + i, "Hello!"); 
   /*從memcached緩存中按key值取對象*/ 
   String result = (String) memCachedClient.get("" + i); 
   System.out.println(String.format("set( %d ): %s", i, success)); 
   System.out.println(String.format("get( %d ): %s", i, result)); 
  } 
 } 
} 

1.解壓(本例中解壓到c:\memcached)。
2、在命令行狀態(tài)下輸入: c:\memcached\memcached.exe -d install 。至此memcached已經(jīng)安裝成windows服務(wù)
3、在命令行下輸入: c:\memcached\memcached.exe -d start 以啟動memcached服務(wù)。當然也可以選擇在windows服務(wù)中啟動

相關(guān)文章

  • java使用randomaccessfile在文件任意位置寫入數(shù)據(jù)

    java使用randomaccessfile在文件任意位置寫入數(shù)據(jù)

    Java在文件任意位置寫入數(shù)據(jù)可以使用RandomAccessFile方法來完成,下面看一個簡單的示例就明白了
    2014-01-01
  • 淺談java異常處理(父子異常的處理)

    淺談java異常處理(父子異常的處理)

    下面小編就為大家?guī)硪黄獪\談java異常處理(父子異常的處理)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Java中注解@Async實現(xiàn)異步及導致失效原因分析

    Java中注解@Async實現(xiàn)異步及導致失效原因分析

    Async注解用于聲明一個方法是異步的,當在方法上加上這個注解時將會在一個新的線程中執(zhí)行該方法,而不會阻塞原始線程,這篇文章主要給大家介紹了關(guān)于Java中注解@Async實現(xiàn)異步及導致失效原因分析的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • 輕松掌握java組合模式

    輕松掌握java組合模式

    這篇文章主要幫助大家輕松掌握java組合模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • SpringBoot異步任務(wù)實現(xiàn)下單校驗庫存的項目實踐

    SpringBoot異步任務(wù)實現(xiàn)下單校驗庫存的項目實踐

    在開發(fā)中,異步任務(wù)應(yīng)用的場景非常的廣泛,本文主要介紹了SpringBoot異步任務(wù)實現(xiàn)下單校驗庫存的項目實踐,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java中Arrays數(shù)組工具類的基本使用詳解

    Java中Arrays數(shù)組工具類的基本使用詳解

    Arrays類中的方法都是static修飾的靜態(tài)方法,在使用的時候可以直接使用類名進行調(diào)用,而"不用"使用對象來調(diào)用(注意:是"不用"?而不是?"不能"),這篇文章主要給大家介紹了關(guān)于Java中Arrays數(shù)組工具類的基本使用,需要的朋友可以參考下
    2021-12-12
  • springBoot+dubbo+zookeeper實現(xiàn)分布式開發(fā)應(yīng)用的項目實踐

    springBoot+dubbo+zookeeper實現(xiàn)分布式開發(fā)應(yīng)用的項目實踐

    本文主要介紹了springBoot+dubbo+zookeeper實現(xiàn)分布式開發(fā)應(yīng)用的項目實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • SpringBoot集成Access?DB實現(xiàn)數(shù)據(jù)導入和解析

    SpringBoot集成Access?DB實現(xiàn)數(shù)據(jù)導入和解析

    microsoft?office?access是由微軟發(fā)布的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它結(jié)合了?microsoft?jet?database?engine?和?圖形用戶界面兩項特點,是一種關(guān)系數(shù)據(jù)庫工具,本文給大家介紹了SpringBoot集成Access?DB實現(xiàn)數(shù)據(jù)導入和解析,需要的朋友可以參考下
    2024-11-11
  • Java位集合之BitMap實現(xiàn)和應(yīng)用詳解

    Java位集合之BitMap實現(xiàn)和應(yīng)用詳解

    這篇文章主要介紹了Java位集合之BitMap實現(xiàn)和應(yīng)用的相關(guān)資料,BitMap是一種高效的數(shù)據(jù)結(jié)構(gòu),適用于快速排序、去重和查找等操作,通過簡單的數(shù)組和位運算,可以在Java中實現(xiàn)BitMap,從而節(jié)省存儲空間并提高性能,需要的朋友可以參考下
    2024-12-12
  • SpringBoot實現(xiàn)Logback輸出日志到Kafka方式

    SpringBoot實現(xiàn)Logback輸出日志到Kafka方式

    本文介紹了如何在SpringBoot應(yīng)用中通過自定義Appender實現(xiàn)Logback輸出日志到Kafka,包括配置maven依賴、Kafka工具類和logback.xml配置
    2025-02-02

最新評論

高要市| 武川县| 鲁甸县| 金阳县| 侯马市| 马公市| 辽源市| 双桥区| 炎陵县| 偏关县| 沅江市| 丹东市| 汕头市| 富川| 左权县| 修文县| 边坝县| 岱山县| 奉贤区| 镇康县| 桃园县| 莆田市| 湟中县| 河北省| 顺昌县| 万山特区| 安达市| 德兴市| 洛隆县| 蓬溪县| 潼南县| 三门县| 行唐县| 石棉县| 江永县| 正安县| 鄄城县| 孟州市| 合肥市| 宜宾县| 屏边|