文档章节

J2Cache缓存2分钟自动失效原因查找

********
 ********
发布于 2016/09/30 16:39
字数 429
阅读 195
收藏 0

最近在项目内又一次用了j2cache分布式缓存,遇到一个奇怪的问题,用RedisManager监控发现,过2分钟左右会自动清除缓存。

我分析后应该有这几种可能性:

1、redis服务器配置导致缓存定时清除

2、jedis配置导致缓存定时删除

3、ehcache配置导致缓存删除,同时J2Cache内部在被动清除ehcache缓存时也通知redis

4、程序内不小心调用了evict等方法导致缓存失效

 

step1、最先怀疑的是第4点,程序内不小心调用了清除缓存的方法。于是在J2Cache入口处设置断点本地调试,2分钟后缓存失效,未进断点,排除4

step2、接着怀疑第1点,redis服务器配置导致缓存定时清除。于是在程序内调用J2Cache设置缓存,再关闭进程,等待5分钟,缓存未消失,排除1

step3、接着怀疑第2点,jedis配置导致缓存定时删除。我看了下jedis的配置选项,没有关于缓存过期的配置,都是一些关于连接池的配置,基本排除3

step4、最后怀疑是不是J2Cache在一级缓存被动清除时也会通知redis,只能看看J2Cache源码了!

根据“Cache data expired...”这条log找到清除2级缓存的代码位置(RedisCacheChannel.java)

跟踪方法调用位置(EhCache.java)

看到这可以知道,是ehcache缓存失效时通知2级缓存失效导致的。

解决方法:J2Cache每个region对应ehcache.xml里的每个cache.name,根据实际情况配置缓存时间

© 著作权归作者所有

共有 人打赏支持
********

********

粉丝 13
博文 139
码字总数 19574
作品 0
福州
个人站长
私信 提问
J2Cache相关...

各位英雄好汉 , 请教诸位一些问题: 1. "从数据库中读取最新数据,依次更新 L1 -> L2 ,发送广播清除某个缓存信息 ,接收到广播(手工清除缓存 & 一级缓存自动失效),从 L1 中清除指定的缓存信...

磁爆步兵001
06/04
284
2
J2Cache 2.2.1 正式版发布,开源中国两级缓存框架

J2Cache 2.2.1 正式版发布了。J2Cache 是 OSChina 目前正在使用的两级缓存框架。第一级缓存使用 Ehcache,第二级缓存使用 Redis 。由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因...

周其
01/10
973
5
请教下j2cache的问题

@红薯 你好,想跟你请教个问题: 在oschina迁移到j2cache前,你提到过oschina的缓存是由两级缓存组成,一级为定时失效,二级为长期有效。这样再用key加锁的方式,可以一定程度上减缓缓存“雪...

我是一只来自北方的狼
2015/11/19
220
1
J2Cache 2.3.12 发布,支持二级缓存只读模式

J2Cache 推出至今,已有多人希望能提供二级缓存只读模式,相当于应用只能从 Redis 二级缓存读取数据,而不允许写入任何数据,包括当一级缓存失效时也不能去清除二级缓存的数据。这样的开发者...

红薯
04/27
1K
5
J2Cache 2.2.0-beta 发布,开源中国两级缓存框架

J2Cache 2.2.0-beta 发布,J2Cache 是 OSChina 目前正在使用的两级缓存框架。第一级缓存使用 Ehcache,第二级缓存使用 Redis 。由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此...

周其
01/08
3K
21

没有更多内容

加载失败,请刷新页面

加载更多

自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
35分钟前
1
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
35分钟前
2
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
36分钟前
1
0
Android TV开发-按键焦点

写在前面 按键焦点过程了解 2.1 dispatchKeyEvent 过程了解 2.2 焦点查找请求过程了解 1.2.1 第一次获取焦点 1.2.3 按键焦点 焦点控制 焦点记忆 应用场景 参考资料 [TOC] 1. 写在前面 工...

冰雪情缘l
36分钟前
1
0
java框架学习日志-3

这章主要是补充一些ioc创建对象的方式,ioc容器在写好<bean></bean>的时候就已经创建对象了。在之前的例子中,一直都是无参的构造方法。下面给出有参的构造方法的对象的创建,没有什么难点重...

白话
38分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部