`

XMemcached集成

 
阅读更多

参考文档:https://code.google.com/p/xmemcached/wiki/User_Guide_zh

 

1:下载

xmemcached-1.4.2-bin-with-dependencies.tar.gz

https://code.google.com/p/xmemcached/downloads/list

解压文件,将其中的slf4j-api-1.7.5.jar  和 xmemcached-1.4.2.jar 放到项目

2:加入如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"
	default-lazy-init="true">
	<description>Xmemcached 缓存配置</description>

	<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 name="memcachedServer1" class="java.net.InetSocketAddress">
					<constructor-arg>
						<value>192.168.6.253</value>
					</constructor-arg>
					<constructor-arg>
						<value>11311</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="authInfoMap">
			<map>
				<entry key-ref="memcachedServer1">
					<bean class="net.rubyeye.xmemcached.auth.AuthInfo"
						factory-method="typical">
						<constructor-arg index="0">
							<value>cacheuser</value>
						</constructor-arg>
						<constructor-arg index="1">
							<value>123456</value>
						</constructor-arg>
					</bean>
				</entry>
			</map>
		</property>
		 -->
		<property name="connectionPoolSize" value="1"></property>
		<property name="commandFactory">
			<bean class="net.rubyeye.xmemcached.command.TextCommandFactory"></bean>
			<!-- <bean class="net.rubyeye.xmemcached.command.BinaryCommandFactory"></bean> -->
		</property>
		<!-- 采用一致性Hash 算法实现 -->
		<property name="sessionLocator">
			<bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"></bean>
		</property>
		<property name="transcoder">
			<bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" />
		</property>
		 <!-- ByteBuffer allocator -->
        <property name="bufferAllocator">
                <bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator"></bean>
        </property>
        <!-- Failure mode -->
        <property name="failureMode" value="false"/>
	</bean>
	
	<!-- Use factory bean to build memcached client -->
	<bean name="memcachedClient" factory-bean="memcachedClientBuilder"
		factory-method="build" destroy-method="shutdown" />

</beans>

 

3:写单元测试:

package com.capitalbio.soft.test.xmemcached;

import net.rubyeye.xmemcached.MemcachedClient;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;

import com.capitalbio.soft.core.utils.spring.SpringContextHolder;
import com.capitalbio.soft.entity.account.Authority;
import com.capitalbio.soft.entity.account.Role;
import com.capitalbio.soft.test.core.SpringTransactionalTestCase;

@ContextConfiguration(locations = { "/applicationContext.xml","/applicationContext-xmemcached.xml" })
public class MemcachedTest extends SpringTransactionalTestCase {
	private Logger logger = LoggerFactory.getLogger(getClass());
	
	@Test public void testMemcached() {
		try {
			MemcachedClient client = SpringContextHolder.getBean(MemcachedClient.class);
			logger.debug("{}",client.get("key_conf"));
			boolean ret = client.set("key_conf", 0, new Role(1l, "张三en"));
			if(ret) {
				ret = client.replace("key_conf", 0, new Authority(1l, "权限"));
				if(ret) logger.debug("{}",client.get("key_conf"));
			}
			if(client.delete("key_conf")){
				logger.debug("删除成功! - {}",client.get("key_conf"));
			}
//			client.setWithNoReply
//			client.deleteWithNoReply
//			client.replaceWithNoReply
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

 4:

到http://www.newasp.net/soft/63735.html#downloads 

下载windows版本的memcached,解压文件到无空格,无中文目录

5:

将下面代码保存为bat,更改其中的memcached路径为memcached解压的路径,且执行

@echo off

rem -c 代表访问memcached的并发数, -m 代表最大内存 -p 代表端口

sc create memcached_11311 binPath= "D:\\exec\\Memcached\\memcached_en32or64\\x64\\memcached.exe -d runservice -c 1111 -m 1024 -p 11311" DisplayName= "memcached_11311" start= auto

pause;

 6:启动项目,执行单元测试看是否成功!

 

7:以上配置为Spring3.0的,Spring3.0以下的配置为:

<!-- 以下是xmemcached对于spring3.0以下版本的配置 -->
	<!-- memcachedClient 简单配置
	<bean name="memcachedClient"
		class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean"
		destroy-method="shutdown">
		<property name="servers">
			<value>host1:port host2:port2</value>
		</property>
	</bean> -->
	<!-- memcached 复杂配置 -->
	<bean name="server1" class="java.net.InetSocketAddress">
		<constructor-arg>
			<value>host1</value>
		</constructor-arg>
		<constructor-arg>
			<value>port1</value>
		</constructor-arg>
	</bean>
	<bean name="memcachedClient"
		class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean"
		destroy-method="shutdown">
		<property name="servers">
			<value>host1:port,host2:port host3:port,host4:port</value>
		</property>
		<!-- server's weights -->
		<property name="weights">
			<list>
				<value>1</value>
				<value>2</value>
				<value>3</value>
			</list>
		</property>
		<!-- AuthInfo map,only valid on 1.2.5 or later version -->
		<property name="authInfoMap">
			<map>
				<entry key-ref="server1">
					<bean class="net.rubyeye.xmemcached.auth.AuthInfo"
						factory-method="typical">
						<constructor-arg index="0">
							<value>cacheuser</value>
						</constructor-arg>
						<constructor-arg index="1">
							<value>123456</value>
						</constructor-arg>
					</bean>
				</entry>
			</map>
		</property>
		<!-- nio connection pool size -->
		<property name="connectionPoolSize" value="2"></property>
		<!-- Use text protocol,二进制协议在xmemcached里使用namespace的时候有问题 -->
		<property name="commandFactory">
			<bean class="net.rubyeye.xmemcached.command.TextCommandFactory"></bean>
		</property>
		<!-- Distributed strategy -->
		<property name="sessionLocator">
			<bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"></bean>
		</property>
		<!-- Serializing transcoder -->
		<property name="transcoder">
			<bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" />
		</property>
		<!-- ByteBuffer allocator -->
		<property name="bufferAllocator">
			<bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator"></bean>
		</property>
		<!-- Failure mode -->
		<property name="failureMode" value="false" />
	</bean>

 

8:具体请参见官方文档:https://code.google.com/p/xmemcached/wiki/User_Guide_zh

分享到:
评论

相关推荐

    xmemcached

    8. **易于集成**:Xmemcached与Spring框架有很好的兼容性,可以方便地与Spring的缓存抽象层集成,简化开发工作。 **Xmemcached版本1.3.3** 版本1.3.3是Xmemcached的一个稳定版本,可能包含了一些错误修复、性能...

    xmemcached 中文开发手册

    - 对于使用Maven构建项目的用户,可以通过简单的依赖声明(如上述示例)轻松集成XMemcached。 #### 示例代码 以下是一段简单的XMemcached使用示例,展示如何建立连接、读写数据以及释放资源: ```java import ...

    Xmemcached官方中文手册

    这份手册不仅包含了基础的API使用方法,还涵盖了如何将Xmemcached与Spring等主流框架进行集成的详细配置信息。 **1. Xmemcached框架介绍** Xmemcached由Kafka Chen发起,设计目标是提供一个简单易用且高效的...

    xmemcached-1.4.3.jar

    这些API设计直观,易于理解和使用,使得开发人员能够快速集成Memcached到他们的项目中。 1. 连接管理:xmemcached支持多线程环境下的连接池管理,可以配置连接池大小,自动重连和心跳检测机制,确保了与Memcached...

    xmemcached api doc

    xmemcached 可以集成监控框架如 JMX,用于实时查看客户端状态和性能指标。同时,通过配置日志框架,可以记录操作日志,便于排查问题。 ### 六、apidocs `apidocs` 文件夹包含了 xmemcached 的 JavaDoc,是学习和...

    Xmemcached用户指南

    此外,XMemcached还支持与Hibernate-Memcached集成,后者允许将Memcached用作Hibernate的二级缓存。 **8. 客户端连接池** - **提升并发性能**:尽管Java NIO模型通常每个Memcached节点只需要一个连接,但XMemcached...

    memcache.spymemcached,和xmemcached 三种缓存实例

    本文将深入探讨memcache的三种常见Java客户端实现:spymemcached、xmemcached和原生的memcache接口。 1. **spymemcached**: spymemcached是由Spy公司开发的一个开源Java客户端,它是Memcached最常用的Java库之一...

    Java的开源高性能memcached客户端XMemcached.zip

    Xmemcached是基于java nio实现的高性能可扩展的... 可扩展,易于集成 可动态增删memached节点 客户端操作统计 NIO连接池 等等,更多信息请见wiki文档。 标签:XMemcached

    征服 Kestrel + XMemcached

    此外,还可以探索其他开源项目和库,看看它们如何集成Kestrel和XMemcached,以便从中学习最佳实践。 总的来说,掌握Kestrel和XMemcached的使用,不仅可以提升系统的性能和可扩展性,还能为开发者在解决复杂分布式...

    mule ce xmemcached

    “mule ce xmemcached” 指的是Mule Community Edition(社区版)集成XMemcached的场景。Mule是一款强大的企业级服务总线(ESB)和集成平台,而XMemcached则是一个高性能、轻量级的Java Memcached客户端库。 **描述...

    Xmemcached用户指南.docx

    7. **框架集成**:与Spring框架和Hibernate-memcached无缝集成,使得在使用这些框架的项目中轻松引入Memcached缓存。 8. **客户端连接池**:为了提升高并发环境下的性能,XMemcached支持创建连接池,但需要保证数据...

    Xmemcached用户指南.pdf

    7. **Spring和Hibernate集成**:与Spring框架无缝集成,同时支持Hibernate-memcached,作为二级缓存解决方案,可替代Spymemcached。 8. **客户端连接池**:允许创建连接池以应对高并发场景,但需要注意数据独立性和...

    Xmemcached/jedis springdemo

    【Xmemcached/jedis Spring Demo】是一个整合了Xmemcached和jedis的Spring示例项目,旨在帮助开发者理解和学习如何在Spring框架中集成并使用这两种流行的NoSQL客户端库。Xmemcached是Java编写的高效、易用的...

    Xmemcached一个java实现的分布式缓存

    这个库的主要目标是提供简单、快速、无阻塞的客户端API,以便于开发人员在Java应用程序中集成和利用Memcached的强大功能。下面将详细讨论Xmemcached的关键特性和使用方法。 1. **Memcached简介** Memcached是一种...

    征服 Kestrel + XMemcached + Spring TaskExecutor

    通过XMemcached,开发者可以方便地在Java应用中集成缓存功能,优化数据读取速度,降低对后端数据库的依赖。 Spring TaskExecutor是Spring框架的一部分,提供了异步任务执行的能力。它允许开发者创建线程池,调度和...

    Ehcache+xmemcached+redis 整合spring注解demo

    在Spring框架中,可以通过注解配置将Ehcache集成到业务逻辑中,例如使用`@Cacheable`、`@CacheEvict`等注解实现自动的缓存操作。 2. **xmemcached**: xmemcached是Java的一个高性能、线程安全的Memcached客户端库。...

    spring集成memcached

    ### Spring集成Memcached详解 #### 一、Memcached简介与客户端选择 Memcached是一种高性能、分布式内存对象缓存系统,用于减轻数据库负载、加速动态Web应用,并提高网站速度。Spring框架可以通过集成Memcached来...

    Memcached spring 的集成

    - Xmemcached是Java社区开发的一个高效Memcached客户端,它支持异步操作,具有高并发性,同时提供了丰富的API和异常处理机制。 3. **Spring集成**: - Spring框架提供了缓存抽象,允许开发者通过注解或XML配置来...

    阿里ocs客户端与spring集成,生命周期由spring管理

    阿里ocs的java客户端demo,我测试了xmemcached和spymemcached。两个都可用,但xmc可以交由spring管理client对象的生命周期,而spymc却是spring能创建但无法关闭,研究结果为:用xmc来做客户端,需注意的地方就是...

    memcache-demo

    标题"memcache-demo"指的是一个关于Memcache的示例项目,其中可能包含如何在Java环境中,特别是在使用XMemcached这个客户端库时,集成和使用Memcache的代码实例。XMemcached是一个高效、稳定的Java Memcached客户端...

Global site tag (gtag.js) - Google Analytics