使用memcached客户端Xmemcached与Spring整合

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();

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Memcached 客户端中,通常有两个超时相关的设置:连接超时和操作超时。 1. 连接超时:指当客户端尝试连接 Memcached 服务器时,如果在规定的时间内无法建立连接,则会超时。可以通过设置客户端的连接超时时间来调整这个设置。具体方法取决于你使用客户端库,例如在 PHP 中,可以使用 `Memcached::setOption()` 方法设置 `OPT_CONNECT_TIMEOUT` 选项来调整连接超时时间。 2. 操作超时:指当客户端发送一个请求给 Memcached 服务器时,如果在规定的时间内没有收到响应,则会超时。可以通过设置客户端的操作超时时间来调整这个设置。同样,具体方法取决于你使用客户端库,例如在 Python 中,可以使用 `memcache.Client()` 的 `socket_timeout` 参数设置操作超时时间。 需要注意的是,超时时间设置过短可能会导致误判或性能问题,设置过长则可能会增加系统响应时间。因此,需要根据具体的场景和系统负载情况来进行调整。 ### 回答2: 要调整 Memcached 客户端的超时设置,可以按照以下步骤进行操作: 1. 确定需要调整超时设置的客户端程序和操作系统。 2. 获取客户端程序的配置文件或代码文件。 3. 打开配置文件或代码文件,查找超时相关的配置项或代码片段。 4. 根据需要,调整超时时间的数值。可以增加或减少超时时间,以适应不同的网络环境和业务需求。 5. 保存配置文件或代码文件,并重新启动或重新编译客户端程序,使新的超时设置生效。 需要注意的是,不同的客户端程序可能有不同的超时设置方式,以下是一些常见的调整超时设置的方法: - 如果使用的是一些开源的 Memcached 客户端库,可以查阅它们的文档,寻找相关的超时设置选项,并按照文档的指导进行调整。 - 如果使用的是自己编写的客户端程序,可以在代码中找到与超时设置相关的部分,根据需要进行调整。例如,可以修改连接超时、读取超时和写入超时等参数。 - 如果使用的是配套的命令行工具(如memcached-tool),可以在命令行中指定超时参数。例如,使用"-t"参数指定超时时间为X秒。 总之,根据具体的情况,通过修改配置文件、调整代码或加入参数等方式,可以方便地调整 Memcached 客户端的超时设置,以满足实际需求。 ### 回答3: 要调整 Memcached 客户端的超时设置,可以通过以下步骤进行操作: 1. 首先,确定你所使用Memcached 客户端库。不同的编程语言可能有不同的 Memcached 客户端库,如 php-memcached、python-memcached 等。 2. 查阅所使用Memcached 客户端库的文档或官方网站,了解相关的超时设置参数和默认值。通常,超时设置参数的名称可能会有所不同,例如 timeout、connect_timeout、socket_timeout 等。 3. 根据文档或官方网站的指引,找到设置超时的方法或函数。这些方法或函数通常会在创建 Memcached 客户端对象或连接到 Memcached 服务器时被调用。调用方法可能会接受一个超时值作为参数,单位可以是秒或毫秒。 4. 根据自己的需求,设置一个适当的超时值。超时值应该与你的应用逻辑和网络环境相匹配。通常情况下,可以将超时值设置为几秒钟或几毫秒,以确保在超时期限内获得响应。 5. 在代码中修改相应的设置,并重新编译或重启应用程序,以使设置生效。 6. 测试代码的修改是否生效。可以使用一些测试脚本或工具来模拟访问 Memcached 服务器并检查超时设置是否符合预期。 请注意,不同的 Memcached 客户端库和版本可能会有不同的超时设置方式和参数名称。因此,在进行设置时,应仔细阅读和理解所使用客户端库的文档,并根据实际情况进行相应的调整和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值