第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > Mac OS X上的Java Memcached

Mac OS X上的Java Memcached

时间:2023-11-08 11:46:43

相关推荐

Mac OS X上的Java Memcached

介绍

在本文中,我将解释如何:

在Mac OS X上安装和配置Memcached 在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和所有开发工具。 我使用了上的文章“在Mac OS X 10.6 Snow Leopard上安装memcached 1.4.1”。 为简单起见,我重复了内容并更新为最新版本。

1.创建一个工作目录:

$ mkdir memcachedbuild$ cd memcachebuild

2.安装对memcached必需的libevent

$ curl -O /~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 /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 11211Trying 127.0.0.1...Connected to tgrall-server.Escape character is '^]'.set KEY 0 600 16This is my valueSTOREDget KEYVALUE KEY 0 16This is my valueEND

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>/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 : CITYEnter the new value : Paris, France-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-11-16 15:22:09.932 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@5b40c281Get Object before set :nullGet Object after set :Paris, France

您还可以从Telnet会话访问对象:

get CITYVALUE CITY 0 13Paris, FranceEND

您可以在应用程序中使用任何Java类,唯一要做的就是使该类可序列化。

这是有关memcached和Java的第一篇文章,目前我正在研究一个集成Web服务调用,Portlet和memcached的小示例。

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

翻译自: //05/java-memcached-on-mac-os-x.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。