本文主要记录java项目集成J2Cache并以ehcache作为一级缓存,redis作为二级缓存的配置过程。(以下内容仅个人观点)

首先介绍下已有项目情况,已有项目为ssm框架,已集成ehcache功能即目前项目后台已使用ehcache缓存存储数据,在此基础上进行J2Cache集成。

1、准备工作:

(1)首先根据情况引入J2Cache功能,视情况而定可以引入对应jar包,也可以手动把对应功能包 放入项目中(需要引入功能必须其他jar包),本项目使用grale引入对应jar包j2cache-core 2.7.7-release;

(2)若无ehcache,则需引入ehcache的对应jar包,目前ehcache已有3.x,本项目使用的依旧是2.x,配置过程类似,只是配置文件有些许差异。

(3)准备redis,若为linix服务器可直接百度下载最新功能,目前是5.x,本项目使用window系统,故使用3.x版本的redis服务,配置信息类似。

2、集成过程:

(1)引入J2Cache,本项目引入对应jar包,按需求进行选择,也可手动将J2Cache相关功能代码放入项目中然后引入该部分代码需要的jar包。

(在此对比下两种方式的优劣:引入jar包的优势在于不用引一堆其他jar包,而且升级换代方便,缺点J2cache相关配置文件j2cache.properties必须放在项目根目录resource下才能生效,很麻烦;手动放代码的优势,想放哪放哪,便于管控,处理问题也比较方便改源码,缺点,需要引一堆jar包)

(2)进行j2cache.properties配置。

-设置j2cache一级、二级缓存类型

-设置ehcache缓存配置文件地址

-设置redis配置信息(channel需要与ehcache中的name一致,hosts为redis服务地址)

配置完成后确认项目已引入ehcache并已启动redis服务,即可进行测试连接。

CacheChannel cache = J2Cache.getChannel();

if (cache != null) {

cache.set("spcp","test","aaa");

CacheObject element = cache.get("spcp", "test");

if (element != null) {

System.out.println(element.getValue());

}

}

无误即表示集成成功

3、使用过程中遇到的问题

(1)ehcache使用出错:another unnamed CacheManager already exists in the same VM

首先本项目使用shiro,故已经引入shiro-ehcache-1.2.3的jar包,同时为了使用ehcache又引入了net.sf.ehcache-2.10.6的jar包,导致系统中引入了两个版本的ehcache-core,在使用ehcache存储时会出现cacheManager已存在的异常,异常截图如图:

可以看到确实有两个chacheManager包,分别来自shiro-ehcache和ehcache自身,而ehcahce2.5及以上版本不允许同时出现cacheManager。

解决方案:需要将shiro-ehcache的版本降级,改用shiro-ehcache-1.1.0,降版本后问题即可解决。

(2)redis连接异常:

Could not get a resource from the pool;

该异常出现原因是因为通过jedisPool获取对象时发现对象有问题,故抛出异常;

解决方式:redis.testOnBorrow = false

将j2cache.properties中的redis.testOnBorrow配置从true改为false,意为当调用borrow Object方法时,不进行有效性检查 ;

Connection reset by peer: socket write error;

该异常出现原因是因为redis服务连接异常;

检查方式:想要判断是否确实是redis连接问题,需要到redis服务器上进行以下操作

1、检查6379端口是否在redis服务器上开启:

cmd打开命令窗口,输入telnet 你的redis服务器地址 redis端口(例:telnet 172.16.0.11 6379),如果弹出新窗口即表示端口联通成功。

2、检查redis的地址、端口是否允许可用(以下为window系统方式);

到redis服务器上,打开cmd命令窗口,先通过cd命令跳转到redis的根目录,然后使用redis-cli命令跳转到对应ip端口下,输入set,按照规格随意添加一个值

出现error即表示redis服务异常

解决方式:

修改redis.windows.conf中的bind信息,将其注释掉,并添加protected-mode no配置。

重启redis,正常情况下即可解决问题,但有些时候配置文件中的protected-mod没有生效,需要手动用cmd修改,跳转到redis下,执行redis-cli命令,手动设置protected-mod参数即可。

java项目集成J2Cache(一级缓存ehCache,二级缓存redis)相关推荐

  1. 项目整合一级缓存和二级缓存

    Redis+ehCache实现两级缓存 spring boot中集成了spring cache,并有多种缓存方式的实现,如:Redis.Caffeine.JCache.EhCache等等.但如果只用一 ...

  2. 458、Java框架112 -【MyBatis - 一级缓存、二级缓存】 2020.12.28

    目录 0.一级缓存 1.在一个Session里查相同id的数据 2.在不同Session里查相同id的数据 3.二级缓存 4.基于前一个知识点 5.观察无二级缓存 6.启动二级缓存 7.在Catego ...

  3. java mysql 二级缓存_深入理解MyBatis中的一级缓存与二级缓存

    http://blog.csdn.net/weixin_36380516/article/details/73194758 先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓存中 ...

  4. MyBatis→优缺点、select延迟加载、接口式MyBatis编程、一级缓存、二级缓存、集成Redis自定义缓存、Log4j

    MyBatis优缺点 select延迟加载 接口式MyBatis编程 一级缓存 一级缓存原理 一级缓存命中原则 一级缓存销毁 一级缓存避免脏读不可重复读 一级缓存与spring@事务 二级缓存 与一级 ...

  5. mybatis一级缓存、二级缓存以及集成EnCache、Redis,避免脏读

    参考书目:<mybatis从入门到精通> 刘增辉  著 作者GitHub:https://github.com/abel533/MyBatis-Spring-Boot 一级缓存 mybat ...

  6. java一级缓存二级缓存_一级缓存和二级缓存的理解

    首先补充下CPU的知识: CPU也就是中央处理器,相当于计算机的大脑: CPU是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit): CPU功能主要是解 ...

  7. 【SSH网上商城项目实战16】Hibernate的二级缓存处理首页的热门显示

    转自:https://blog.csdn.net/eson_15/article/details/51405911 网上商城首页都有热门商品,那么这些商品的点击率是很高的,当用户点击某个热门商品后需要 ...

  8. Mybatis缓存机制(一级缓存、二级缓存、三级缓存)

    一.含义: 缓存就是内存中的数据,常常来自对数据库查询结果的保存. 使用缓存,我们可以避免频繁与数据库进行交互,从而提高响应速度. Mybatis的缓存分为一级缓存.二级缓存.三级缓存. 一级缓存: ...

  9. 一级缓存和二级缓存的理解

    首先补充下CPU的知识: CPU也就是中央处理器,相当于计算机的大脑: CPU是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit): CPU功能主要是解 ...

  10. Mybatis一级缓存,二级缓存的实现就是这么简单

    介绍 又到了一年面试季,所以打算写一点面试常问的东西,争取说的通俗易懂.面试高级岗,如果你说熟悉Mybatis,下面这些问题基本上都会问 Mybatis插件的实现原理? 如何写一个分页插件? Myba ...

最新文章

  1. Android开发遇到eclipse运行程序时报timeout
  2. Linux系统下统计目录及其子目录文件个数
  3. IIS 网站服务器性能优化指南
  4. Redis-08Redis数据结构--基数HyperLogLog
  5. Spring Boot Cache之缓存
  6. 【Linux使用】Centos 7设置时区与时钟(chrony / ntp /systemd)
  7. 两波形相位差的计算值_波形相位频率可调DDS信号发生器(设计分享)
  8. JMX configuration for Tomcat
  9. matlab 最优化编程,Matlab最优化编程例子
  10. matlab 机械振动,MATLAB使用教程之用MATLAB仿真机械振动.doc
  11. luogu p1330封锁阳光大学
  12. RQNOJ 341 星门跳跃【解题报告】
  13. 步步为营——局域网调试NAS软路由“PVE+爱快+lede+黑群晖硬盘直通”并移植到宽带网(超详细,上篇)
  14. 哪些产品需要做3C认证,费用是多少
  15. 多臂赌博机问题代码实践
  16. ZigBee 3.0实战教程-Silicon Labs EFR32+EmberZnet-2-01:芯科的硬件解决方案EFR32
  17. Python 官方的中文文档
  18. Opencv值core组件(二):感兴趣区域选取与计算数组加权和
  19. Windows Server 2012 R2 Standard序列号
  20. 泛微软件服务器,泛微移动平台 服务器设置

热门文章

  1. 【宋红康 MySQL数据库 】【高级篇】【14】数据库的设计规范
  2. 总结使用SnakeYAML解析与序列化YAML相关
  3. java中图片排版_基于Java的图像排版系统的设计.pdf
  4. 纠错码 - 海明码/汉明码
  5. DotFun Silverlight 整站系统Beta版上线!
  6. 控制工程实践(2)——拉普拉斯变换及传递函数(之拉氏变换)
  7. Chrome浏览器启动命令行参数大全
  8. 特征值与特征向量及其应用
  9. 去除CAJviewer右上侧的广告栏位去除CAJviewer右上侧的广告栏位
  10. GPU硬件加速原理 /转