- 浏览: 7339594 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
1 简介
Xmemcached是一个高性能的基于java nio的memcached客户端。在经过三个RC版本后,正式发布1.10-final版本。
xmemcached特性一览:
1、高性能
2、支持完整的memcached文本协议,二进制协议将在1.2版本实现。
3、支持JMX,可以通过MBean调整性能参数、动态添加/移除server、查看统计等。
4、支持客户端统计
5、支持memcached节点的动态增减。
6、支持memcached分布:余数分布和一致性哈希分布。
7、更多的性能调整选项。
2 与Spring整合
XMemcached从1.1.2开始,能灵活方便的与Spring Framework整合在一起使用。
2.1 最简单例子
<bean name="memcachedClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean">
<property name="servers">
<value>host1:port1 host2:port2</value>
</property>
</bean>
然后在bean中就可以使用memcachedClient了。
2.2 复杂一点儿的例子
<bean name="memcachedClient"
class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean">
<property name="servers">
<value>host1:port1 host2:port2 host3:port3</value>
</property>
<property name="weights">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
</list>
</property>
<property name="sessionLocator">
<bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"></bean>
</property>
<property name="transcoder">
<bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" />
</property>
<property name="bufferAllocator">
<bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator"></bean>
</property>
</bean>
其中各参数的意义:
参数 |
含义 |
servers |
服务器列表,格式:ip:port |
weights |
主机映射:host1对应1号、host2对应2号.. |
sessionLocator |
Session 分配器,有自带的,影响分布式 |
transcoder |
通信编码方式 |
bufferAllocator |
缓冲区分配器 |
注:
默认标准Hash, hash(key) mod server_count (余数分布)
MemcachedClientBuilder builder = new XMemcachedClientBuilder( AddrUtil.getAddresses("server1:11211 server2:11211 server3:11211")); MemcachedClient mc = builder.build(); |
可以改为Consistent Hash(一致性哈希):
MemcachedClientBuilder builder = new XMemcachedClientBuilder( AddrUtil.getAddresses("server1:11211 server2:11211 server3:11211")); builder.setSessionLocator(new KetamaMemcachedSessionLocator()); MemcachedClient mc = builder.build(); |
使用实例
3.1介绍
目前支持所有的memcached 文本协议(二进协议正在开发中,预计在1.2中会出现) ,现包括了 get/gets、set、add、replace、delete、append、prepend、cas、multi get/gets、incr、decr、version、stats、flush_all等。
3.2 简单实例
MemcachedClient client;
try {
client = new XMemcachedClient("localhost",11211);//默认端口
// store a value for one hour(synchronously).
String someObject = "缓存这个一个小时可以吗?";
client.set("key", 3600, someObject);
// Retrieve a value.(synchronously).
Object getSomeObject = client.get("key");
// delete
client.delete("key");
System.out.println(getSomeObject.toString());
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MemcachedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
以上代码是没有经过Spring管理的,XMemcachedClient是一个常驻程序。所以可以考虑将它置入到Spring中,配置方式前面已讲过。
使用方式见下:
private MemcachedClient memcachedClient;
public void setMemcachedClient(MemcachedClient memcachedClient) {
this.memcachedClient = memcachedClient;
}
注入后直接可使用。
3.3 监听服务器映射
Xmemcached源代码中XMemcachedClientMBean的setServerWeight(String server, int weight)方法可以将被监听服务器进行编号。具体使用方式可以用:
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("localhost:12000 localhost:12001"),new int[]{1,3}); //编号为1,3
MemcachedClient memcachedClient=builder.build();
3.4动态改变被监听服务器
Xmemcached支持动态的增加或者删除监听服务器,方式如下:
MemcachedClient client=new XMemcachedClient(AddrUtil.getAddresses("server1:11211 server2:11211"));
//Add two new memcached nodes
client.addServer("server3:11211 server4:11211");
//Remove memcached servers
client.removeServer("server1:11211 server2:11211");
3.5 使用CAS更新缓存
CASOperation需要先gets获取cas值,然后再调用cas方法更新,XMemcached提供了一个包装类可以帮你搞定这两步。以下是一个使用实例:
class CASThread extends Thread {
static final class IncrmentOperation implements CASOperation<Integer> {
/*
*Max repeat times.if repeat times is great than this value,
*xmemcached will throw a TimeoutException.
*/
@Override
public int getMaxTries() {
return Integer.MAX_VALUE;
}
//increase current value
@Override
public Integer getNewValue(long currentCAS, Integer currentValue) {
return currentValue + 1; // 当前值+1
}
}
private XMemcachedClient mc;
private CountDownLatch cd;
public CASThread(XMemcachedClient mc, CountDownLatch cdl) {
super();
this.mc = mc;
this.cd = cdl;
}
public void run() {
try {
//do the cas operation
if (mc.cas("a", 0, new IncrmentOperation()))
this.cd.countDown();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class CASTest {
public static void main(String[] args) throws Exception {
if (args.length < 2) {
System.err.println("Usage:java CASTest [threadNum] [server]");
System.exit(1);
}
//threads num
int NUM = Integer.parseInt(args[0]);
XMemcachedClient mc = new XMemcachedClient(AddrUtil.getAddresses(args[1]));
//initial value is 0
mc.set("a", 0, 0);
CountDownLatch cdl = new CountDownLatch(NUM);
long start = System.currentTimeMillis();
//start NUM threads to increment the value
for (int i = 0; i < NUM; i++)
new CASThread(mc, cdl).start();
cdl.await();
System.out.println("test cas,timed:"
+ (System.currentTimeMillis() - start));
System.out.println("result=" + mc.get("a"));
mc.shutdown();
}
}
评论
主机映射:host1对应1号、host2对应2号..
应该是权重, 当时写的时候,没有太重视注释,不要意思!谢谢支持!
Xmemcached源代码中XMemcachedClientMBean的setServerWeight(String server, int weight)方法可以将被监听服务器进行编号。具体使用方式可以用:
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("localhost:12000 localhost:12001"),new int[]{1,3}); //编号为1,3
MemcachedClient memcachedClient=builder.build();
这个不是编号吧, 看参数名就知道是权重的意思了
Xmemcached源代码中XMemcachedClientMBean的setServerWeight(String server, int weight)方法可以将被监听服务器进行编号。具体使用方式可以用:
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("localhost:12000 localhost:12001"),new int[]{1,3}); //编号为1,3
MemcachedClient memcachedClient=builder.build();
这个不是编号吧, 看参数名就知道是权重的意思了
发表评论
-
【转】Django resources
2014-01-23 14:35 10828Django resources This page li ... -
使用国内镜像源来加速python pypi包的安装
2014-01-16 11:16 197843pipy国内镜像目前有: http://pypi.d ... -
[转 ]vagrant使用简介
2014-01-10 13:53 257531> 简介: vagrant提供了易于配置,重复性 ... -
[转]在Java中调用Python
2014-01-07 13:08 9220在执行之前都需要把jython对应的包加载进去,这个是必须的 ... -
[转]Eclipse配置PyDev插件
2014-01-02 14:25 2840安装python解释器 安装PyDev: 首 ... -
RestFuse的研究(五) Http请求的封装
2014-06-14 15:50 3648在RestFuse中封装了Http请 ... -
RestFuse的研究(四) Junit的Statement的分析
2013-12-06 11:46 1674在RestFuse提供了多种单 ... -
RestFuse的研究(三) Junit的Rule的使用和分析
2013-12-06 11:01 2239在junit中定义一些可以公用的规则(R ... -
RestFuse的研究(二) Junit的Runner的分类和模式
2013-12-06 10:40 1605在Junit4中的调用JunitCore可以采 ... -
RestFuse的研究(一) HttpJunitRunner的实现
2013-12-06 10:11 1748在RestFuse是一种针对Rest We ... -
[转]An open-source JUnit extension to test HTTP/REST APIs
2013-12-06 09:57 1101http://developer.eclipsesource ... -
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3356TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51589文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14199最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8695TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2715TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2813TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2456TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2785TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2703TestNG官方网站: http://testng.or ...
相关推荐
xmemcached提供了丰富的API,可以方便地与Spring整合,通过注解实现缓存管理。例如,可以使用`@Memcached`注解在方法上,使方法结果自动存储到Memcached服务器。 3. **Redis**: Redis是一个开源的、基于键值对的...
4. **Spring整合NoSQL**: - **Spring Data** 框架提供了对多种NoSQL数据库的支持,包括Memcached和Redis。通过Spring Data,可以简化数据访问层的开发,例如自动产生CRUD操作,提供基于注解的查询支持。 - 配置...
8. **易于集成**:Xmemcached与Spring框架有很好的兼容性,可以方便地与Spring的缓存抽象层集成,简化开发工作。 **Xmemcached版本1.3.3** 版本1.3.3是Xmemcached的一个稳定版本,可能包含了一些错误修复、性能...
Spring框架在企业级Java应用中广泛应用,Xmemcached提供了一套完整的Spring整合方案。通过Spring的Bean管理,可以方便地在应用上下文中注入Memcached客户端,实现服务的自动配置和依赖注入。手册中会详细介绍如何...
XMemcached作为一款高度优化的memcached客户端,不仅支持memcached的所有功能,还提供了许多额外的功能,如动态节点管理、与Spring框架的集成等,使其成为现代Web应用程序的理想选择。通过本文的详细介绍,希望能...
【Xmemcached与SPRING整合】是将Xmemcached客户端库与Spring框架集成,以便在Spring应用程序中方便地使用memcached缓存服务。Xmemcached是一个高性能的Java NIO实现的memcached客户端,具备多种特性,如高性能、支持...
通过深入学习Kestrel的配置、管理和监控,掌握XMemcached的使用技巧,以及理解Spring TaskExecutor的线程池管理策略,开发者可以有效地优化应用程序的性能,同时保证系统的可伸缩性和可靠性。在实际项目中,可能还...
标题“Spring与memcached整合”涉及的是在Java开发环境中如何将Spring框架与memcached缓存系统相结合使用,以便提升应用程序的性能和响应速度。这里我们将深入探讨这一整合过程中的关键概念和技术。 首先,...
- **简化开发流程**:考虑到许多项目已经使用Spring框架作为依赖注入容器,XMemcached提供了对Spring的支持。此外,XMemcached还支持与Hibernate-Memcached集成,后者允许将Memcached用作Hibernate的二级缓存。 **8...
两个都可用,但xmc可以交由spring管理client对象的生命周期,而spymc却是spring能创建但无法关闭,研究结果为:用xmc来做客户端,需注意的地方就是spring配置文件中要使用:plain和BinaryCommandFactory。...
在本项目中,我们主要探讨的是如何将Spring Cache与memcached进行整合,以提升应用程序的性能和效率。Spring Cache是Spring框架的一部分,它提供了一种抽象的缓存管理机制,可以方便地集成到各种缓存解决方案中,如...
这里给出的解决方案是通过Spring Bean来与XMemcached配合,创建一个简单的缓存应用实例。这种方式可以帮助用户在不支付额外费用的情况下,利用开源组件实现缓存功能。 **知识点详解:** 1. **Mule ESB**: Mule是一...
### Memcached与Spring、Mybatis集成 #### 一、简单介绍 本文档主要讲述了如何将Memcached缓存系统与Spring框架以及MyBatis ORM工具进行集成。通过这种方式,可以有效地提高应用程序性能,尤其是在处理大量数据读取...
### Spring集成Memcached详解 #### 一、Memcached简介与客户端选择 Memcached是一种高性能、分布式内存对象缓存系统,用于减轻数据库负载、加速动态Web应用,并提高网站速度。Spring框架可以通过集成Memcached来...
在Spring框架中集成Memcached,主要是为了利用其高性能的分布式内存缓存特性来提升应用程序的性能。Xmemcached是Java实现的一个Memcached客户端,提供了丰富的功能和良好的性能。下面我们将深入探讨如何进行集成以及...
7. **框架集成**:与Spring框架和Hibernate-memcached无缝集成,使得在使用这些框架的项目中轻松引入Memcached缓存。 8. **客户端连接池**:为了提升高并发环境下的性能,XMemcached支持创建连接池,但需要保证数据...
7. **Spring和Hibernate集成**:与Spring框架无缝集成,同时支持Hibernate-memcached,作为二级缓存解决方案,可替代Spymemcached。 8. **客户端连接池**:允许创建连接池以应对高并发场景,但需要注意数据独立性和...
当我们需要在Spring应用中集成Memcached时,"simple-spring-memcached"(SSM)是一个很好的选择。这篇博客(链接:https://younglibin.iteye.com/blog/2157666)将指导我们如何进行这个集成过程。 首先,我们要了解...
【Kestrel任务执行者:Kestrel + XMemcached + Spring TaskExecutor】 在Java开发领域,高效的任务调度和执行是关键部分,特别是在分布式系统中。这个项目名为"kestrel-task-executor",它结合了Kestrel消息队列、...
"下面我们以XMemcached为例,结合spring演示一下其使用"这部分意味着该压缩包可能包含了如何将XMemcached与Spring框架整合使用的教程或代码示例。Spring是一个广泛应用的Java企业级开发框架,它可以与多种缓存解决...