使用memcachedclientXmemcached与Spring整合
1 简单介绍
Xmemcached是一个高性能的基于java nio的memcachedclient。在经过三个RC版本号后。正式公布1.10-final版本号。
xmemcached特性一览:
1、高性能
2、支持完整的memcached文本协议,二进制协议将在1.2版本号实现。
3、支持JMX,能够通过MBean调整性能參数、动态加入/移除server、查看统计等。
4、支持client统计
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 |
server列表。格式: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();
相关文章
- spring + spring mvc + tomcat 面试题(史上最全)
- Spring Boot 参数校验
- 网络编程 -- RPC实现原理 -- RPC -- 迭代版本V2 -- 本地方法调用 整合 Spring
- Spring整合Mybatis极简完整示例(结构清晰仅需一个xml系统配置文件!)
- 深入实践Spring Boot3.2.2 查看控制器
- 开源UReport 整合到产品中实践简要:(一)spring boot下UReport安装与配置()
- 玩转Kafka—Spring&Go整合Kafka
- Swagger使用-Spring Boot整合Swagger
- 《SpringBoot篇》09.Spring Data JPA简介与SpringBoot整合超详细教学
- Spring源码解析(?)Spring使用构造函数实例分析
- spring配置,spring中的bean 的id不能相同
- Spring Security 实战干货: 登录成功后返回 JWT Token
- Spring Boot 2 实战:以 War 包的形式部署
- Spring Security 实战干货:实现自定义退出登录
- spring boot mybatis没有扫描jar中的Mapper接口
- Java使用RabbitMQ之整合Spring(消费者)
- Spring Boot整合Kaptcha实现验证码功能
- Spring官方文档翻译——15.4 处理器映射(Handler mappings)
- 同一个数据库实例,不同用户下多表创建视图,Hibernate完毕ORM映射,Spring整合,后台实现
- Spring 常用注解
- spring源码分析之freemarker整合
- Spring之LoadTimeWeaver——一个需求引发的思考---转
- Spring 3整合Quartz 2实现定时任务--转
- 事物Spring boot @Transactional
- spring mvc 绑定参数据默认值,是否必传,(RequestParam(value="id",defaultValue="1",required=true) )