Mac OS X上的Java Memcached

介紹

在本文中,我將解釋如何:

  1. 在Mac OS X上安裝和配置Memcached
  2. 在Java應用程序中使用Memcached

我不會過多地介紹在您的應用程序中使用分布式緩存的好處,但是至少讓我們提供一些在企業門戶(在我的情況下為eXo平臺)中運行的應用程序的使用案例– 令人驚訝的是不是嗎 我將在另一篇文章中展示。

在企業門戶的上下文中,我們有很多使用緩存(無論是否分布式)的原因,讓我們看一下其中的一些原因:

  • 門戶用于在單個頁面中聚合數據。 這些數據可能來自不同的來源:Web服務,數據庫,ERP等,而實時訪問數據可能會非常昂貴。 因此,盡可能地緩存調用結果將非常有趣。
  • 如果使用門戶來聚合來自許多來源的許多數據,則有時需要跳入另一個應用程序以繼續某些操作。 分布式共享緩存可用于管理在不同進程(JVM甚至技術)中運行的不同應用程序之間的某些上下文

這是兩個示例,其中共享緩存可能對基于門戶的應用程序很有趣,我們可以找到許多其他原因。

請注意,Portlet API(JSR-286)已經包含用于緩存HTML片段的緩存機制,并且eXo Platform還基于JBoss Cache提供了低級 緩存 。

安裝與配置

從源安裝Memcached

您可以在Memcached Wiki上找到有關Memcached安裝的一些信息。 以下步驟是我在環境中使用的步驟。

據我所知,Memached不能作為Mac OS X的軟件包使用。我仍然在Snow Leopard(10.6.8)上,并且已經安裝了XCode和所有開發工具。 我使用了wincent.com上的文章“在Mac OS X 10.6 Snow Leopard上安裝memcached 1.4.1”。 為簡單起見,我重復了內容并更新為最新版本。

1.創建一個工作目錄:

$ mkdir memcachedbuild
$ cd memcachebuild

2.安裝對memcached必需的libevent

$ curl -O http://www.monkey.org/~provos/libevent-1.4.14-stable.tar.gz
$ tar xzvf libevent-1.4.14-stable.tar.gz
$ cd libevent-1.4.14-stable
$ ./configure
$ make
$ make verify
$ sudo make install

3.安裝memcached

返回您的安裝目錄( memcachedbuild

$ curl -O http://memcached.googlecode.com/files/memcached-1.4.10.tar.gz
$ tar xzvf memcached-1.4.10.tar.gz
$ cd memcached-1.4.10
$ ./configure
$ make
$ make test
$ sudo make install

現在,您可以使用/ usr / local / bin / memcached中可用的memcached

這樣可以避免更改為/ usr / bin中的預安裝memcached,如果要替換它而不是自己安裝,只需運行帶有以下參數的configure命令:./configure –prefix = / usr

啟動和測試Memcached

使用以下命令行啟動memcached服務器:

$ /usr/local/bin/memcached -d -p 11211

此命令在TCP端口11211上以守護程序(-d參數)的形式啟動memcached服務器(這是默認值)。 您可以使用man memcached找到有關memcached命令的更多信息。

可以使用telnet連接來連接和測試服務器。 建立連接后,您可以在緩存中設置并獲取對象,請看以下段落。

$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to tgrall-server.
Escape character is '^]'.
set KEY 0 600 16
This is my value
STORED
get KEY
VALUE KEY 0 16
This is my value
END

set命令允許您使用以下語法在緩存中放置新值:

set <key> <flags> <expiration_time> <number_of_bytes> [noreply]<value>
  • key:用于將數據存儲在緩存中的鍵
  • flags:32位無符號整數,與數據一起進行memcached存儲
  • expiration_time:以秒為單位的到期時間,如果您輸入0,則表示沒有延遲
  • number_if_bytes:數據塊中的字節數
  • noreply:告訴服務器不返回任何值的選項
  • value:要存儲并關聯到鍵的值。

這是位于源目錄/memcachedbuild/memcached-1.4.10/doc/protocol.txt中的文檔的簡短視圖。

get命令允許您訪問與鍵關聯的值。

您可以通過在telnet會話中調用stats命令來檢查正在運行的memcahed的版本。

您的內存緩存服務器已啟動并正在運行,現在您可以開始在應用程序中使用它。

具有Memcached的簡單Java應用程序

從Java應用程序使用memcached的最簡單方法是使用客戶端庫。 您可以找到許多客戶端庫 。 在此示例中,我使用的是由Couchbase的人員開發的spymemcached 。

1.將SpyMemcached添加到您的Maven項目

將存儲庫添加到您的pom.xml(或您的setting.xml)中

<repository><id>spy</id><name>Spy Repository</name><layout>default</layout><url>http://files.couchbase.com/maven2/</url>
</repository>

然后對您的pom.xml的依賴

<dependency><groupid>spy</groupid><artifactid>spymemcached</artifactid><version>2.7.3</version>
</dependency>

2.在您的應用程序中使用SpyMemcache客戶端

以下代碼是一個簡單的Java類,允許您輸入鍵和值并將其設置在緩存中。

package com.grallandco.blog;import java.io.BufferedReader;
import java.io.IOException;
import java.io.Console;
import java.io.InputStreamReader;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.spy.memcached.AddrUtil;
import net.spy.memcached.MemcachedClient;public class Test {public static void main(String[] args) {try {System.out.print("Enter the new key : ");BufferedReader reader = new BufferedReader( new InputStreamReader(System.in));String key = null;key = reader.readLine();System.out.print("Enter the new value : ");String value = null;value = reader.readLine();MemcachedClient cache = new MemcachedClient(AddrUtil.getAddresses("127.0.0.1:11211"));// read the object from memorySystem.out.println("Get Object before set :"+ cache.get(key)  );// set a new object            cache.set(key, 0, value );System.out.println("Get Object after set :"+ cache.get(key)  );} catch (IOException ex) {Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);System.exit(0);}System.exit(0);}
}

因此,在執行應用程序時,您將看到類似以下內容:

Enter the new key : CITY
Enter the new value : Paris, France
2011-11-16 15:22:09.928 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2011-11-16 15:22:09.932 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@5b40c281
Get Object before set :null
Get Object after set :Paris, France

您還可以從Telnet會話訪問對象:

get CITY
VALUE CITY 0 13
Paris, France
END

您可以在應用程序中使用任何Java類,唯一要做的就是使該類可序列化。

這是有關memcached和Java的第一篇文章,目前我正在研究一個集成Web服務調用,Portlet和memcached的小示例。

參考: 在我們的JCG合作伙伴 Tugdual Grall的Tug's Blog博客上,在Mac OS X上安裝Memcached并在Java中使用它 。


翻譯自: https://www.javacodegeeks.com/2012/05/java-memcached-on-mac-os-x.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372737.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372737.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372737.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Js實現內容向上無縫循環滾動

當前項目有一個類似公告向上滾動的需求&#xff0c;在網上搜索到一個比較棒的程序&#xff0c;現摘錄如下&#xff1a; //document.getElementById()的最簡化應用 function $(element) {if (arguments.length > 1) {for (var i 0, length arguments.length, elements [];…

Repeater 中TextBox 觸發TextChanged事件

兩種方法 1.TextBox 綁定TextChanged 并設置AutoPostBack "true" &#xff0c;如果不設置AutoPostBack "true"則不會觸發TextChanged事件&#xff0c;然后在對應的方法里面循環Repeater查找改變項 部分代碼 <ItemTemplate ><tr><td style &…

什么是Spring Integration?

隨著Spring Integration項目逐漸獲得越來越多的采用和興趣&#xff0c;企業集成或企業開發領域的開發人員很可能會遇到它。 他們可能會發現它很有趣&#xff0c;但并沒有完全理解它的含義&#xff0c;所要解決的問題&#xff0c;可以從中獲取更多信息以及它在ESB和其他SOA基礎結…

java jmap mat_java內存調優之jmap,jstack,mat

查看整個JVM內存狀態jmap -heap [pid]要注意的是在使用CMS GC 情況下&#xff0c;jmap -heap的執行有可能會導致JAVA 進程掛起查看JVM堆中對象詳細占用情況jmap -histo [pid]可以通過jmap -histo [pid] | head -20查看top20的實例個數以及內存占用情況導出整個JVM 中內存信息&a…

lftp

-f&#xff1a;指定lftp指令要執行的腳本文件&#xff1b; -c&#xff1a;執行指定的命令后退出&#xff1b; --help&#xff1a;顯示幫助信息&#xff1b; --version&#xff1a;顯示指令的版本號。下載 get當然是可以的&#xff0c;還可以&#xff1a; mget -c *.pdf #把所有…

Apache Shiro第1部分–基礎

Apache Shiro &#xff08;最初稱為JSecurity&#xff09;是Java安全框架。 它被接受并于2010年成為Apache頂級項目。它的目標是功能強大且易于使用。 該項目正在積極開發中&#xff0c;用戶和開發人員的郵件列表均處于活動狀態。 最重要的區域記錄在其網頁上。 但是&#xff0…

javascript 之Object內置對象

Object.defineProperty(obj, prop, descriptor)轉載于:https://www.cnblogs.com/lihuali/p/5632460.html

java員工編號程序_用JAVA編寫一個employee類 為員工自動產生員工號

差不多就是這個感覺..class Employee {/*** param args*/private int number;private String name;private String birthday;static int IDnumber0;public Employee(String name,String birthday){IDnumber;this.setNumber(IDnumber);this.setName(name);this.setBirthday(birt…

分解質因數-洛谷P3200 [HNOI2009]有趣的數列

https://www.luogu.org/problem/show?pid3200 首先&#xff0c;我們不能保證要求的數的逆元和模域互質&#xff1b; 所以我們要用分解質因數來抵消除法&#xff1b; 其實逆元的話即使可行也會超時&#xff1b; 那么我轉載了&#xff0c;實在沒什么可以說的&#xff1b; 另…

Java中的安全加密

上一次我寫關于密碼學的文章時 &#xff0c;我概述了Apache Shiro加密API&#xff0c;并展示了如何使用其兩個對稱密碼。 我還寫道&#xff1a;“您不需要在應用程序中對敏感數據進行加密和解密。” 我了解了更多有關密碼的知識&#xff0c;發現您需要了解更多信息。 我寫的內容…

真機調試問題

1.拔掉插頭重新插入 2.轉載于:https://www.cnblogs.com/sanvow/p/5633976.html

vsftp

它的配置文件在/etc/vsftpd/vsftpd.conf在里面加入 anonymous_enableYES &#xff03;允許匿名用戶登錄FTPanon_upload_enableYES &#xff03;打開匿名用戶的上傳權限anon_mkdir_write_enableYES &#xff03;打開匿名用戶創建目錄的權限anon_other_write_enableYES …

java scrollpane源碼_JScrollPane用法 Java實例

時間&#xff1a;2019-10-07概述&#xff1a;JScrollPane 滾動條在Java中使用JScrollPane的例子&#xff0c;特別是滾動條的設置等&#xff0c;程序代碼中將設置水平與垂直表頭、設置scrollPane的邊角圖案、設置scrollPane的邊框凹陷立體邊框。適時水平滾動軸的參數設置等內容&…

ANTLR教程– Hello Word

Antlr代表另一種語言識別工具。 該工具能夠為任何計算機語言生成編譯器或解釋器。 除了明顯的用途&#xff08;例如需要解析一種真正的“大型”編程語言&#xff0c;例如Java&#xff0c;PHP或SQL&#xff09;外&#xff0c;它還可以幫助執行更小&#xff0c;更常見的任務。 每…

centOS 6.5安裝python和nginx

一、安裝python3.5 1、安裝python3.5 2、安裝pip并升級到最新 下載wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gz 注意&#xff1a;wget獲取https的時候要加上&#xff1a;--no-check-certificate tar zvxf 1.5.5.tar.gz #解壓文件 cd pip…

rabbitmq 學習-9- RpcClient發送消息和同步接收消息原理

rabbitmq 學習-9- RpcClient發送消息和同步接收消息原理 轉載于:https://www.cnblogs.com/gotodsp/p/6532824.html

匯編寫java模塊_java – maven匯編插件moduleset源指令不包括任何文件,不符合附帶的模塊...

我有一個多模塊的maven項目,我正在嘗試獲取組件插件的moduleset源部分.我有模塊“module_parent”,“module_a”和“module_assembly”.module_a和module_assembly是module_parent的子項.module_assembly對module_a有一個聲明的pom依賴關系.module_assmebly具有程序集插件,asse…

用于RIA的JavaFX 2與HTML5

這些天來&#xff0c;我們正在啟動一個新項目&#xff0c;以實現Rich Internet Application&#xff08;RIA&#xff09; 。 第一個問題是&#xff1a;我們應該使用哪些技術和框架&#xff1f; 后端將是Java或其他現代JVM語言&#xff0c;因為我們主要是經驗豐富的Java開發人員…

插件化編程實現的一份糖炒栗子~~

迷茫的原因是因為想得太多&#xff0c;做得太少。因為只是 想 真的很容易&#xff0c;轉瞬之間就會產生無數個念頭&#xff0c;或許是該做點什么了吧。 但是整個人都是懶的&#xff0c;是廢的&#xff0c;是大腦控制不住自己的行為的。解決方案唯有一步一步的去把行為變成習慣。…

用C#來學習唐詩三百首和全唐詩

Begin 最近把項目做完了&#xff0c;閑來無事&#xff0c;就想做點好玩的事情&#xff0c;剛好前幾天下載了【唐詩三百首】和【全唐詩】這兩個txt文件&#xff0c;正好用C#來整理一下。 然后導出QData格式&#xff0c;可以給其他軟件讀取。 以后弄個開機自動顯示一句詩&#xf…