使用memcached客戶端Xmemcached與Spring整合
來自: http://blog.csdn.net//chenleixing/article/details/47035409
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();