spring boot集成memcached方式三(XMemcached)

spring boot 专栏收录该内容
43 篇文章 2 订阅

       本文主要实现spring boot集成XMemcached这种方式(持续更新,有人维护),推荐使用

第一步:windows下安装Memcached

       在网上查了大量的参考资料,发现有很多种实现方式,我们在第一种,首先在https://www.runoob.com/memcached/window-install-memcached.html里面下载相应的版本,我一开始现在的是64位的1.4.5版本,然后按照教程里面的安装手册安装,我发现并没有安装成功,查询了大量的资料,找了各种原因(telnet 127.0.0.1 11211测试等等),都没有找到相应的解决办法,所以我就放弃了1.4.5版本,转而安装1.4.4版本,可以发布成server的版本。

       具体如何安装以及修改参数都在上面的网页教程里面有相应的记录,这里我需要说明的是:当执行c:\memcached\memcached.exe -d start之后,这个memcached进行就会启动,关机重启电脑也会自动启动这个进程。不用再刻意的去配置开机启动。

       首先确保这个服务开启了,才能在后续代码里面使用memcached服务。

第二步:在代码中添加maven依赖

    <dependency>
        <groupId>com.googlecode.xmemcached</groupId>
        <artifactId>xmemcached</artifactId>
        <version>2.4.5</version>
    </dependency>

第三步:在application.properties中配置memcache相关配置信息

memcached.server=127.0.0.1:11211 10.86.54122:11211 #memcached服务器集群(格式为host:port,多个服务器之间用空格隔开)
memcached.opTimeout=3000 #接口操作的默认超时时间,可以被接口覆盖
memcached.poolSize=10 #池子大小
memcached.failureMode=false  #是否开启失败模式,默认为false
memcached.enabled=true 是否使用memcached缓存

第四步:编写XMemcacheConfig配置类

@Configuration
public class XMemcacheConfig {
	
	@Value("${memcached.server}")
	private String server;
	
	@Value("${memcached.opTimeout}")
	private Integer opTimeout;
	
	@Value("${memcached.poolSize}")
	private Integer poolSize;
	
	@Value("${memcached.failureMode}")
	private boolean failureMode;
	
	@Value("${memcached.enabled}")
	private boolean enabled;
	
	@Bean(name = "memcachedClientBuilder")
	public MemcachedClientBuilder getBuilder() {
		MemcachedClientBuilder memcachedClientBuilder = new XMemcachedClientBuilder(server);
		// 内部采用一致性哈希算法
		memcachedClientBuilder.setSessionLocator(new KetamaMemcachedSessionLocator());
		// 操作的超时时间
		memcachedClientBuilder.setOpTimeout(opTimeout);
		// 采用二进制传输协议(默认为文本协议)
		memcachedClientBuilder.setCommandFactory(new BinaryCommandFactory());
		// 设置连接池的大小
		memcachedClientBuilder.setConnectionPoolSize(poolSize);
		// 是否开起失败模式
		memcachedClientBuilder.setFailureMode(failureMode);
		return memcachedClientBuilder;
	}
	/**
	 * 由Builder创建memcachedClient对象,并注入spring容器中
	 * @param memcachedClientBuilder
	 * @return
	 */
	@Bean(name = "memcachedClient")
	public MemcachedClient getClient(@Qualifier("memcachedClientBuilder") MemcachedClientBuilder memcachedClientBuilder) {
		MemcachedClient client = null;
		try {
			client =  memcachedClientBuilder.build();
		} catch(Exception e) {
			e.printStackTrace();
		}
		return client;
	}
}

第五步:编写测试memcache的controller类

@RestController
public class XMemcacheController {

	@Autowired
	private MemcachedClient memcachedClient;
	
	@RequestMapping("/XMemcacheIndex")
	public String XMemcacheIndex() throws InterruptedException {
		try {
			//新增操作
			memcachedClient.set("XMemcacheKeyOne",0,"张三");
			System.out.println((String)memcachedClient.get("XMemcacheKeyOne"));
			
			//删除操作
			memcachedClient.delete("XMemcacheKeyOne");
			System.out.println((String)memcachedClient.get("XMemcacheKeyOne"));
			
			//设置存活时间
			memcachedClient.set("XMemcacheKeyTwo",1,"李四");
			Thread.sleep(2000);
			System.out.println((String)memcachedClient.get("XMemcacheKeyTwo"));
			
			//更新操作
			memcachedClient.set("XMemcacheKeyThree",0,"王五");
			System.out.println((String)memcachedClient.get("XMemcacheKeyThree"));
			memcachedClient.set("XMemcacheKeyThree",0,"王五他儿子");
			System.out.println((String)memcachedClient.get("XMemcacheKeyThree"));		
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "xMemcacheIndex";
	}
}

第六步:测试

       启动程序,输入http://localhost:8080/XMemcacheIndex,输出结果如图所示:

  • 0
    点赞
  • 2
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值