mac memcached_Mac OS X上的Java Memcached

mac 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安装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 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位无符号整数
  • 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

mac memcached

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

json日期转换

//调用 ChangeDateFormat(CreatTime) //json日期转换 function ChangeDateFormat(jsondate) { jsondate jsondate.replace("/Date(", "").replace(")/", ""); if (jsondate.indexOf("") > 0) { jsondate jsondate.subs…

物料分拣系统matlab仿真,自动物料分拣机器人控制系统设计+Matlab源程序+图纸

自动物料分拣机器人控制系统设计Matlab源程序图纸时间:2019-07-12 22:29来源:毕业论文在设计中各个极限位置都会设置有传感器来作为边界的报警信号。以此来防止将会因为智能控制的错误带来的危险的事故。而本课题带来的设计是简而言之就是使用虚拟样机技术在虚拟设计总说明&…

JBoss EAP 7快速入门

现在&#xff0c; 最新的Red Hat JBoss企业应用平台7的beta版已经发布&#xff0c;现在是时候探索可用的Java EE 7 快速入门并使用JBoss Developer Studio &#xff08;JDBS&#xff09;部署您的第一个应用程序了。 快速入门演示了JBoss EAP&#xff0c;Java EE 7和一些其他技…

java instantiation,Instantiation of List (Java)

动机今天刷Leetcode时碰到的一道问题(216. Combination Sum III)&#xff1a;Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.给出的func…

Linux基础练习题(二)

Linux基础练习题(二) 1、复制/etc/skel目录为/home/tuer1&#xff0c;要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [rootwww ~]# cp -r /etc/skel/ /home/tuser1 [rootwww ~]# chmod -R 600 /home/tuser1/ 2、编辑/etc/group文件&#xff0c;添加组hado…

java 多线程写缓存,Java多线程_缓存对齐

1.什么是缓存对齐当前的电脑中&#xff0c;数据存储在磁盘上&#xff0c;可以断电保存&#xff0c;但是读取效率较低。不断电的情况下&#xff0c;数据可以在内存中存储&#xff0c;相对硬盘效率差不多是磁盘的一万倍左右。但是运算时&#xff0c;速度最快的是直接缓存在CPU中的…

ArcGIS Server SOE开发之奇怪异常:

添加之后结果显示如下:fjsontokenezkBvir0Tj5q31UEst7pTFPwrwocmHklCajKeh-xXM91qWdBXDuQMmtGcaHaaXCJ 具体如下: 该SOE扩展在另一台机器上测试时可以正常添加,不知道为什么,在此台机器上添加时就出现如下异常. 请教群里大神,大神建议换个浏览器试试,换成IE在添加扩展,竟然成功…

netbeans7.4_NetBeans 7.2引入了TestNG

netbeans7.4代码生成的优点之一是能够查看如何使用特定的语言功能或框架。 正如我在《 NetBeans 7.2 beta&#xff1a;更快&#xff0c;更有用》一文中所讨论的那样&#xff0c; NetBeans 7.2 beta提供了TestNG集成 。 除了对该功能的单一引用之外&#xff0c;我在该帖子中没有…

java.net.noroute,java.net.NoRouteToHostException: No route to host

今天重装了服务器的系统之后&#xff0c;重新在两台服务器布署es集群之后&#xff0c;发现es启动报错&#xff1a;[2015-06-16 10:33:33,455][WARN ][transport.netty ] [ElasticSearch_01] exception caught on transport layer [[id: 0x10560167]], closing connect…

2016年成功的Java开发人员简介

2015年即将结束。 现在是时候总结过去一年做了什么和没有做什么的时候了。 此外&#xff0c;现在是预测下一个2016年的好时机。 您已经猜到这篇文章是关于2016年理想的Java开发人员的。 我想给你一个惊喜&#xff0c;这次我更改了预测的格​​式。 为了使预测更非个人化&#…

Laravel 清空配置缓存

清空配置缓存 php artisan cache:clear php artisan config:clear 转载于:https://www.cnblogs.com/fsong/p/6230644.html

matlab ssgs工具箱,基于PI控制方式的1A开关电源MATLAB仿真研究

基于 PI 控制方式的 1A 开关电源 MATLAB 仿真研究学院&#xff1a;电气与光电工程学院专业&#xff1a;电气工程及其自动化班级&#xff1a;基于 PI 控制方式的 1A 开关电源 MATLAB 仿真研究0目录0 绪论 --------------------------------------------------------------------…

禁用导航栏的右滑返回实现全屏手势返回

今天发现项目中push 的也面的右滑都无法pop 查阅相关资料发现 导航栏右滑手势失效基本有两种情况 1&#xff1b; self.navigationController.interactivePopGestureRecognizer.enabled NO;这个 interactivePopGestureRecognizer手势是控制系统导航右滑返回的关键&#xff0c;让…

猿圈php,路飞学城-学习文档

性能管理介绍CPU性能管理磁盘性能管理网络性能管理内存性能管理性能管理介绍操作系统对硬件资源统一管理&#xff0c;并把资源分配给各个APP使用&#xff0c;资源的使用情况直接影响到程序运行的速度&#xff0c;如果资源使用过高&#xff0c;甚至会造成服务器宕机&#xff0c;…

spring roo_使用Spring Roo进行快速云开发–第1部分:Google App Engine(GAE)

spring rooSpring Roo是在Java平台上提供快速应用程序开发的工具。 我已经解释了何时使用它&#xff1a; http : //www.kai-waehner.de/blog/2011/04/05/when-to-use-spring-roo 。 Spring Roo目前支持两种针对云计算的解决方案&#xff1a;Google App Engine&#xff08;GAE&a…

requests高级用法

会话对象 当你向同一主机发送多个请求时&#xff0c;session会重用底层的tcp连接&#xff0c;从而提升性能&#xff0c;同时session也会为所有请求保持 cookie。 #!/usr/bin/env python # -*- coding:utf-8 -*- # __author__:kzg import requestss requests.Session() # 此地址…

怎样恢复oracle函数,Oracle闪回恢复误删除的表、存储过程、包、函数...

在日常的数据库开发过程汇总难免会出现一些误删除的动作,对于一些误删的操作我们可以通过oracle提供的闪回机制恢复误删数据,从而避免出现较大的生产事故.下面是本人平时工作中积累的一些常用的操作,非常简单实用&#xff0c;分享给大家.恢复dml误删的数据&#xff1a;select *…

Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计

Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计 1.1. software development methodology (also known as SDM 1 1.2. 历史1 1.3. 常见方法2 1.4. DDD Domain Drive Design&#xff0c;也就是领域驱动开发。2 1.5. Tdd TDD&#xff08;测试驱动开发(Test-Driven Developm…

jOOQ API设计缺陷的奇怪发生

jOOQ是一种内部领域特定语言&#xff08;DSL&#xff09; &#xff0c;它以Java&#xff08;宿主语言&#xff09;建模SQL语言&#xff08;外部DSL&#xff09;。 这篇热门文章描述了jOOQ API的主要机制&#xff1a; Java Fluent API设计器速成课程 。 任何人都可以根据该文章…

精馏塔matlab,MATLAB图解精馏塔理论塔板数程序代码

《MATLAB图解精馏塔理论塔板数程序代码》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《MATLAB图解精馏塔理论塔板数程序代码(6页珍藏版)》请在人人文库网上搜索。1、MATLAB图解精馏塔理论塔板数程序代码function distillation %文件名“distillation”可以更改% 输入…