登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
代码拉取完成,页面将自动刷新
开源项目
>
程序开发
>
缓存组件
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
1.4K
Star
5.2K
Fork
1.8K
GVP
红薯
/
J2Cache
代码
Issues
117
Pull Requests
0
Wiki
统计
流水线
服务
JavaDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
发现J2Cahce中Ehcache自动过期之后的evict有些问题,求解
已完成
#I7RB2
LarryKoo
成员
创建于
2015-11-06 16:19
开启两个客户端,ehcache过期时间是60秒(测试方便),以下问题在以J2Cache1.3为准,并且使用redis作为组播 ``` client01: 执行 set C1 a1 AAAA client02: 执行 set C1 a2 BBBB ``` > 一分钟以后,在client02 > get C1 a1 会返回结果[C1,a1,L2] => AAAA 在client01 执行相同的 get C1 a1 会返回[C1,a1,null] => null 并且会通知过其他的客户端执行evict清除,之后在在client02 > get C1 a1 返回结果肯定是null了 那么有几个疑问来了: > 1. 当client01当中的a1已经在L1自动过期了,在client01和client02去执行get得到的结果为什么不一样? 2. 如果认同L1过期后清除L2,那么在过期后,client02中执行get得到的结果是从L2当中取得的,并不是null,但是从client01当中执行get,当L1返回null时为什么不去L2中获取? 3. ehcache当中的region自动过期,是否会同步到其他客户端(从结果来看并没有,但是在执行get之后同步了); --- > 这样的虽然没有明显的数据不一致,但是感觉并没有达到两级缓存的作用,client01在从数据库拿数据,client02还在从L2(Redis)里面拿数据(不理解为嘛会这样设计),为什么set和evict不都做同步。 --- > 我的理解应该是J2Cache对缓存同步只做了evict,并没有做set的通过造成的。 > 而且在ehcache过期时间设置得很大的时候还不容易发现。 --- ``` J2Cahe描述是这样的,好像有出入: 读取顺序 -> L1 -> L2 -> DB 数据更新 1. 从数据库中读取最新数据,依次更新 L1_1 -> L2 ,广播清除某个缓存信息 2. 接收到广播(手工清除缓存 & 一级缓存自动失效),从 L1_2 中清除指定的缓存信息 ``` @红薯 请求解惑。
开启两个客户端,ehcache过期时间是60秒(测试方便),以下问题在以J2Cache1.3为准,并且使用redis作为组播 ``` client01: 执行 set C1 a1 AAAA client02: 执行 set C1 a2 BBBB ``` > 一分钟以后,在client02 > get C1 a1 会返回结果[C1,a1,L2] => AAAA 在client01 执行相同的 get C1 a1 会返回[C1,a1,null] => null 并且会通知过其他的客户端执行evict清除,之后在在client02 > get C1 a1 返回结果肯定是null了 那么有几个疑问来了: > 1. 当client01当中的a1已经在L1自动过期了,在client01和client02去执行get得到的结果为什么不一样? 2. 如果认同L1过期后清除L2,那么在过期后,client02中执行get得到的结果是从L2当中取得的,并不是null,但是从client01当中执行get,当L1返回null时为什么不去L2中获取? 3. ehcache当中的region自动过期,是否会同步到其他客户端(从结果来看并没有,但是在执行get之后同步了); --- > 这样的虽然没有明显的数据不一致,但是感觉并没有达到两级缓存的作用,client01在从数据库拿数据,client02还在从L2(Redis)里面拿数据(不理解为嘛会这样设计),为什么set和evict不都做同步。 --- > 我的理解应该是J2Cache对缓存同步只做了evict,并没有做set的通过造成的。 > 而且在ehcache过期时间设置得很大的时候还不容易发现。 --- ``` J2Cahe描述是这样的,好像有出入: 读取顺序 -> L1 -> L2 -> DB 数据更新 1. 从数据库中读取最新数据,依次更新 L1_1 -> L2 ,广播清除某个缓存信息 2. 接收到广播(手工清除缓存 & 一级缓存自动失效),从 L1_2 中清除指定的缓存信息 ``` @红薯 请求解惑。
评论 (
8
)
登录
后才可以发表评论
状态
已完成
待办的
进行中
已完成
已关闭
负责人
未设置
标签
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (
-
)
标签 (
-
)
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(2)
Java
1
https://gitee.com/ld/J2Cache.git
git@gitee.com:ld/J2Cache.git
ld
J2Cache
J2Cache
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册