mac memcached_Mac OS X上的Java Memcached
mac memcached
介紹在本文中,我將解釋如何:
我不會過多地介紹在您的應(yīng)用程序中使用分布式緩存的好處,但至少讓我們提供一些在企業(yè)門戶(在我的情況下為eXo平臺)中運行的應(yīng)用程序的使用案例– 令人驚訝的是不是嗎 我將在另一篇文章中展示。
在企業(yè)門戶的上下文中,我們有很多使用緩存(無論是否分布式)的原因,讓我們看一下其中的一些原因:
- 門戶網(wǎng)站用于在單個頁面中聚合數(shù)據(jù)。 這些數(shù)據(jù)可能來自不同的來源:Web服務(wù),數(shù)據(jù)庫,ERP等,而實時訪問數(shù)據(jù)可能會非常昂貴。 因此,盡可能地緩存調(diào)用結(jié)果將非常有趣。
- 如果使用門戶來聚合來自許多來源的許多數(shù)據(jù),則有時需要跳入另一個應(yīng)用程序以繼續(xù)某些操作。 分布式共享緩存可用于管理在不同進程(JVM甚至技術(shù))中運行的不同應(yīng)用程序之間的某些上下文
這是兩個示例,對于基于門戶的應(yīng)用程序,共享緩存可能很有趣,我們可以找到許多其他原因。
請注意,Portlet API(JSR-286)已經(jīng)包含用于緩存HTML片段的緩存機制,并且eXo Platform還基于JBoss Cache提供了低級 緩存 。
安裝與配置
從源安裝Memcached
您可以在Memcached Wiki上找到有關(guān)Memcached安裝的一些信息。 以下步驟是我在環(huán)境中使用的步驟。
據(jù)我所知,Memached不能作為Mac OS X的軟件包使用。我仍然在Snow Leopard(10.6.8)上,并且已經(jīng)安裝了XCode和所有開發(fā)工具。 我使用了wincent.com上的文章“在Mac OS X 10.6 Snow Leopard上安裝memcached 1.4.1”。 為簡單起見,我重復(fù)了內(nèi)容并更新為最新版本。
1.創(chuàng)建一個工作目錄:
$ mkdir memcachedbuild $ cd memcachebuild2安裝libevent對memcached是必需的
$ 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 install3.安裝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現(xiàn)在,您可以使用/ usr / local / bin / memcached中可用的memcached
這樣可以避免更改為/ usr / bin中的預(yù)安裝memcached,如果要替換它而不是自己安裝,只需運行帶有以下參數(shù)的configure命令:./configure –prefix = / usr
啟動和測試Memcached
使用以下命令行啟動memcached服務(wù)器:
$ /usr/local/bin/memcached -d -p 11211此命令在TCP端口11211上作為守護程序(-d參數(shù))啟動memcached服務(wù)器(這是默認值)。 您可以使用man memcached找到有關(guān)memcached命令的更多信息。
可以使用telnet連接來連接和測試服務(wù)器。 連接后,您可以在緩存中設(shè)置并獲取對象,請看以下段落。
$ 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 ENDset命令允許您使用以下語法在緩存中添加新值:
set <key> <flags> <expiration_time> <number_of_bytes> [noreply]<value>- key:用于將數(shù)據(jù)存儲在緩存中的鍵
- flags:與數(shù)據(jù)一起存儲的32位無符號整數(shù)
- expiration_time:以秒為單位的到期時間,如果您輸入0,則表示沒有延遲
- number_if_bytes:數(shù)據(jù)塊中的字節(jié)數(shù)
- noreply:告訴服務(wù)器不返回任何值的選項
- value:要存儲并關(guān)聯(lián)到鍵的值。
這是位于源目錄/memcachedbuild/memcached-1.4.10/doc/protocol.txt中的文檔的簡短視圖。
get命令允許您訪問與鍵關(guān)聯(lián)的值。
您可以通過在telnet會話中調(diào)用stats命令來檢查正在運行的memcahed的版本。
您的內(nèi)存緩存服務(wù)器已啟動并正在運行,現(xiàn)在您可以開始在應(yīng)用程序中使用它。
具有Memcached的簡單Java應(yīng)用程序
從Java應(yīng)用程序使用memcached的最簡單方法是使用客戶端庫。 您可以找到許多客戶端庫 。 在此示例中,我使用的是由Couchbase的人員開發(fā)的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.在您的應(yīng)用程序中使用SpyMemcache客戶端
以下代碼是一個簡單的Java類,允許您輸入鍵和值并將其設(shè)置在緩存中。
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);} }因此,在執(zhí)行應(yīng)用程序時,您將看到類似以下內(nèi)容:
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您可以在應(yīng)用程序中使用任何Java類,唯一要做的就是使該類可序列化。
這是有關(guān)memcached和Java的第一篇文章,目前我正在研究一個集成Web服務(wù)調(diào)用,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
mac memcached
總結(jié)
以上是生活随笔為你收集整理的mac memcached_Mac OS X上的Java Memcached的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么设置路由器时间段开关路由器如何控制开
- 下一篇: 2016年成功的Java开发人员简介