昨天收到一个xmc的issue报告,大概的意思是将Xmemcached
与spring 2.5集成没有任何问题,但是将spring升级到3.0就会抛出一个异常,并且spring容器无法正常启动,异常信息类似“Couldn
't find a destroy method named '
shutdown' on bean XMemcachedClientFactoryBean”。更详细的情况可以看这里
,这是这位朋友分析的结果,简单来说就是spring 3.0对于查找destroy method为空的情况处理不同了,过去是打个日志,现在是抛出一个异常。
问题说完,这里主要是介绍下这个问题的解决方式,事实上Xmemcached有一个没有被文档化的Spring配置方式,没有写入文档的主要考虑是以为wiki
介
绍的第一种方式已经足够,而builder的方式相对繁琐一些。通过XmemcachedClientBuilder的这个factory
bean的factory-method,也就是build方法来构建MemcachedClient,这就可以绕开spring
3.0的这个问题。一个示范配置如下:
<
bean
name
="memcachedClientBuilder"
class
="net.rubyeye.xmemcached.XMemcachedClientBuilder"
>
<
constructor-arg
>
<
list
>
<
bean
class
="java.net.InetSocketAddress"
>
<
constructor-arg
>
<
value
>
localhost
</
value
>
</
constructor-arg
>
<
constructor-arg
>
<
value
>
12000
</
value
>
</
constructor-arg
>
</
bean
>
</
list
>
</
constructor-arg
>
</
bean
>
<
bean
name
="memcachedClient"
factory-bean
="memcachedClientBuilder"
factory-method
="build"
destroy-method
="shutdown"
/>
memcachedClientBuilder作为一个factory-bean,接受一个InetSocketAddress列表作为构造函数传入,最后MemcachedClient就可以通过factory-method——也就是build方法创建了。
多个节点情况下,可能你想设置权重,那么传入memcachedClientBuilder的第二个构造函数参数权重数组
即可:
<
bean
name
="memcachedClientBuilder"
class
="net.rubyeye.xmemcached.XMemcachedClientBuilder"
>
<
constructor-arg
>
<
list
>
<
bean
class
="java.net.InetSocketAddress"
>
<
constructor-arg
>
<
value
>
localhost
</
value
>
</
constructor-arg
>
<
constructor-arg
>
<
value
>
12000
</
value
>
</
constructor-arg
>
</
bean
>
<
bean
class
="java.net.InetSocketAddress"
>
<
constructor-arg
>
<
value
>
localhost
</
value
>
</
constructor-arg
>
<
constructor-arg
>
<
value
>
12001
</
value
>
</
constructor-arg
>
</
bean
>
</
list
>
</
constructor-arg
>
<
constructor-arg
>
<
list
>
<
value
>
1
</
value
>
<
value
>
2
</
value
>
</
list
>
</
constructor-arg
>
</
bean
>
<
bean
name
="memcachedClient"
factory-bean
="memcachedClientBuilder"
factory-method
="build"
destroy-method
="shutdown"
/>
上面的例子将localhost:12000的权重设置为1,而localhost:12001的权重设置为2。除了这些配置外,XmemcachedClientBuilder还有其他选项,如配置一致性哈希算法、连接池等,完整的配置例子如下:
<
bean
name
="memcachedClientBuilder"
class
="net.rubyeye.xmemcached.XMemcachedClientBuilder"
>
<!--
XMemcachedClientBuilder have two arguments.First is server list,and second is weights array.
-->
<
constructor-arg
>
<
list
>
<
bean
class
="java.net.InetSocketAddress"
>
<
constructor-arg
>
<
value
>
localhost
</
value
>
</
constructor-arg
>
<
constructor-arg
>
<
value
>
12000
</
value
>
</
constructor-arg
>
</
bean
>
<
bean
class
="java.net.InetSocketAddress"
>
<
constructor-arg
>
<
value
>
localhost
</
value
>
</
constructor-arg
>
<
constructor-arg
>
<
value
>
12001
</
value
>
</
constructor-arg
>
</
bean
>
</
list
>
</
constructor-arg
>
<
constructor-arg
>
<
list
>
<
value
>
1
</
value
>
<
value
>
2
</
value
>
</
list
>
</
constructor-arg
>
<
property
name
="connectionPoolSize"
value
="2"
></
property
>
<
property
name
="commandFactory"
>
<
bean
class
="net.rubyeye.xmemcached.command.TextCommandFactory"
></
bean
>
</
property
>
<
property
name
="sessionLocator"
>
<
bean
class
="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"
></
bean
>
</
property
>
<
property
name
="transcoder"
>
<
bean
class
="net.rubyeye.xmemcached.transcoders.SerializingTranscoder"
/>
</
property
>
</
bean
>
<!--
Use factory bean to build memcached client
-->
<
bean
name
="memcachedClient"
factory-bean
="memcachedClientBuilder"
factory-method
="build"
destroy-method
="shutdown"
/>
分享到:
相关推荐
标题中的“征服 Kestrel + XMemcached + Spring TaskExecutor”揭示了本次讨论的核心内容,涉及到三个关键的技术组件:Kestrel、XMemcached以及Spring的TaskExecutor。这些技术都是在构建高性能、可扩展的分布式系统...
【Xmemcached/jedis Spring Demo】是一个整合了Xmemcached和jedis的Spring示例项目,旨在帮助开发者理解和学习如何在Spring框架中集成并使用这两种流行的NoSQL客户端库。Xmemcached是Java编写的高效、易用的...
spring+xmemcached aop切面 需要xmemcached-1.2.5+spring-2.5.6 class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown"> ${XMemcached_servers} <!-- ...
8. **易于集成**:Xmemcached与Spring框架有很好的兼容性,可以方便地与Spring的缓存抽象层集成,简化开发工作。 **Xmemcached版本1.3.3** 版本1.3.3是Xmemcached的一个稳定版本,可能包含了一些错误修复、性能...
本项目" Ehcache+xmemcached+redis 整合spring注解demo"旨在演示如何将这三种主流的缓存技术——Ehcache、xmemcached和Redis——与Spring框架的注解功能相结合,以实现高效、灵活的缓存管理。以下是对这些知识点的...
这份手册不仅包含了基础的API使用方法,还涵盖了如何将Xmemcached与Spring等主流框架进行集成的详细配置信息。 **1. Xmemcached框架介绍** Xmemcached由Kafka Chen发起,设计目标是提供一个简单易用且高效的...
XMemcached作为一款高度优化的memcached客户端,不仅支持memcached的所有功能,还提供了许多额外的功能,如动态节点管理、与Spring框架的集成等,使其成为现代Web应用程序的理想选择。通过本文的详细介绍,希望能...
在Spring框架中集成Memcached,主要是为了利用其高性能的分布式内存缓存特性来提升应用程序的性能。Xmemcached是Java实现的一个Memcached客户端,提供了丰富的功能和良好的性能。下面我们将深入探讨如何进行集成以及...
### Memcached与Spring、Mybatis集成 #### 一、简单介绍 本文档主要讲述了如何将Memcached缓存系统与Spring框架以及MyBatis ORM工具进行集成。通过这种方式,可以有效地提高应用程序性能,尤其是在处理大量数据读取...
阿里ocs的java客户端demo,我测试了xmemcached和spymemcached。两个都可用,但xmc可以交由spring管理client对象的生命周期,而spymc却是spring...ocs spring xmemcached spymemcached(本机测试用memcached1.4.13版本)
- **TaskService**:封装任务的创建、更新和查询等业务逻辑,与数据库交互,可能也涉及XMemcached进行缓存操作。 - **Configurations**:配置文件,定义Spring TaskExecutor的参数,如线程池大小、超时时间等,以及...
【Xmemcached与SPRING整合】是将Xmemcached客户端库与Spring框架集成,以便在Spring应用程序中方便地使用memcached缓存服务。Xmemcached是一个高性能的Java NIO实现的memcached客户端,具备多种特性,如高性能、支持...
xmemcached-1.2.4的官方源码。 xmemcached XMemcached is a high performance, easy to use blocking multithreaded memcached client in java. It's nio based (using my opensource nio framework :yanf4j), ...
与spymemcached相比,xmemcached提供了更全面的API,支持更多的Memcached命令。它的特点包括: - 支持多线程并发操作 - 使用NIO(非阻塞I/O)进行通信,提供更好的并发性能 - 支持文本和二进制协议 - 提供连接池...
### Spring集成Memcached详解 #### 一、Memcached简介与客户端选择 Memcached是一种高性能、分布式内存对象缓存系统,用于减轻数据库负载、加速动态Web应用,并提高网站速度。Spring框架可以通过集成Memcached来...
此外,XMemcached还支持与Hibernate-Memcached集成,后者允许将Memcached用作Hibernate的二级缓存。 **8. 客户端连接池** - **提升并发性能**:尽管Java NIO模型通常每个Memcached节点只需要一个连接,但XMemcached...
4. **监控与管理**:xmemcached提供了监控和管理工具,可以查看连接状态、统计信息等,帮助优化系统性能。 四、应用场景 xmemcached 2.4.6适用于需要高速缓存的多种场景,例如: 1. **网站静态内容缓存**:缓存...
6. 监控与日志:xmemcached提供了详细的统计信息和日志输出,方便开发者监控系统状态,进行性能调优。 在实际应用中,开发人员可以通过以下步骤来使用xmemcached-1.4.3.jar: 1. 添加依赖:在项目中引入xmemcached...
当我们需要在Spring应用中集成Memcached时,"simple-spring-memcached"(SSM)是一个很好的选择。这篇博客(链接:https://younglibin.iteye.com/blog/2157666)将指导我们如何进行这个集成过程。 首先,我们要了解...
测试类包括Xmemcached客户端与memcached client for java两者,可运行比较性能。 XMemcached简介: XMemcached是基于 java nio的Memcached客户端,java nio相比于传统阻塞 io 模型来说,有 效率高(特别在高并发下...