spring + ehcache + redis两级缓存实战篇(2)

这篇博客深入探讨了在Spring中使用Ehcache和Redis构建两级缓存时遇到的问题及其解决方案。针对访问频率和缓存更新策略,博主提出了在10次本地缓存访问后强制更新Redis的策略。此外,对于使用@Cacheable注解缓存List参数方法时的问题,提出了创建ListKeyParam接口自定义key生成,以避免因List地址不同导致的缓存命中率下降。文章还提及了缓存监控和EL表达式的使用,并提供了源码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上篇《spring + ehcache + redis两级缓存实战篇(1)》中,最后遗留了两个问题给大家思考:

第一个是访问10次本地EhCache 强制访问一次redis 使得激活数据或更新数据,这样会不会更好一些呢?

第二个是使用spring @Cacheable注解缓存方法时,将list参数的地址作为key存储,是否会有问题?

针对上面两个问题,我们主要来探讨如何解决。JUST DO IT! GO!


第一个问题

在上篇TODO处我们标记了问题可能要改进的地方。代码是最好的语言,就不做过多解释了。主要是Element是对value的一个封装,附加了一些状态信息。

EhRedisCache.java


private int activeCount = 10;//默认十次
@Override
    public ValueWrapper get(Object key) {
         Element value = ehCache.get(key);
         LOG.info("Cache L1 (ehcache) :{}={}",key,value);
         if (value!=null) {
             //TODO 访问10次EhCache 强制访问一次redis 使得数据不失效
             if(value.getHitCount() < activeCount){
                 return (value != null ? new SimpleValueWrapper(value.getObjectValue()) : null);
             }else{
                 value.resetAccessStatistics();
             }
         } 
         final String keyStr = key.toString();  
         Object objectValue = redisTemplate.execute(new R
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值