博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式ehcache缓存
阅读量:5878 次
发布时间:2019-06-19

本文共 3348 字,大约阅读时间需要 11 分钟。

今天在这里了记录一下学习ehcache分布式集群的过程。

ehcache的三种最为常用集群方式,分别是 RMI、JGroups 以及 EhCache Server 。
这里主要讲一下rmi方式。

1、添加依赖

net.sf.ehcache
ehcache
2.10.3

2、配置文件

spring.xml:

server1的ehcache.xml:

server2的ehcache.xml只要把提供者和监听者的端口调换就可以了

3、测试

这里是随便写个查询和写入缓存的方法

@CachePut(value = "cachetest", key = "#key")public String put(String key, String value) {    System.out.println("保存数据, " + key + " : " + value);        return value;}@Cacheable(value = "cachetest", key = "#name")public String getName(String name) {    return String.valueOf(System.currentTimeMillis());}

下面是两个测试类,模拟两台服务器

test1

package com.yitop.feng;  import com.yitop.feng.service.EhcacheTestService;  import org.junit.Test;  import org.junit.runner.RunWith;  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.test.context.ContextConfiguration;  import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  import java.util.Scanner;  /**   * @author fengzp   * @date 17/3/1下午2:19   * @email fengzp@gzyitop.com   * @company 广州易站通计算机科技有限公司   */  @RunWith(SpringJUnit4ClassRunner.class)  @ContextConfiguration(locations = {"classpath:spring.xml"})  public class EhcacheTest {      @Autowired      private EhcacheTestService ehcacheTestService;      @Test      public void test() throws InterruptedException {          String name = "feng";          int i = 1;          while (true){              String o = ehcacheTestService.getName(name + i);              System.out.println(i + " : " + o);              i++;              Thread.sleep(1000);              if(i > 5) i = 1;          }      }  }

test2:

package com.yitop.feng;  import com.yitop.feng.service.EhcacheTestService;  import org.junit.Test;  import org.junit.runner.RunWith;  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.cache.Cache;  import org.springframework.test.context.ContextConfiguration;  import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  import java.util.Scanner;  /**   * @author fengzp   * @date 17/3/1下午2:19   * @email fengzp@gzyitop.com   * @company 广州易站通计算机科技有限公司   */  @RunWith(SpringJUnit4ClassRunner.class)  @ContextConfiguration(locations = {"classpath:test2/spring2.xml"})  public class EhcacheTest2 {      @Autowired      private EhcacheTestService ehcacheTestService;      @Test      public void test() throws InterruptedException {          String name = "feng";          int i = 1;          while (true){              String o = ehcacheTestService.getName(name + i);              System.out.println(i + " : " + o);              i++;              if(i > 5){                  i = 1;                  break;              }          }          Thread.sleep(5000);          while (true) {              ehcacheTestService.put(name + i, i++ + "");              if(i > 5) break;          }          while (true){          }      }  }

4、结果

954438-20170310134848936-1781309443.png

954438-20170310134856826-979789802.png

这里先启动test1,等它把数据都写到缓存后,启动test2。可以看到test2启动后能够读取到test1的缓存, 并且之后test2更新缓存后,test1也能同时更新,说明缓存已经成功集群到两边。

转载于:https://www.cnblogs.com/andyfengzp/p/6530322.html

你可能感兴趣的文章
SDL如何嵌入到QT中?!
查看>>
$(document).ready()
查看>>
RunLoop总结:RunLoop的应用场景(四)
查看>>
8个很实用的在线工具来提高你的Web设计和开发能力
查看>>
P1026 统计单词个数
查看>>
AndroidStudio EventBus报错解决方法its super classes have no public methods with the @Subscribe...
查看>>
Python RGB 和HSV颜色相互转换
查看>>
mybatis分页练手
查看>>
.net数据库连接字符串加密
查看>>
[js高手之路] html5 canvas系列教程 - 状态详解(save与restore)
查看>>
文件监控
查看>>
poi excel 常用api
查看>>
AD提高动态的方法(附SNR计算)
查看>>
[转]轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统
查看>>
五 数组
查看>>
也谈跨域数据交互解决方案
查看>>
EntityFramework中使用Include可能带来的问题
查看>>
activity 用 service 更新界面
查看>>
我的时间管理——充分利用WindowsPhone、Android等设备,实现真正的无压工作!
查看>>
面试题28:字符串的排列
查看>>