Redisson3.10 RCacheMap踩坑记录

  1. RMapCache实现了对map中每个key的淘汰机制eviction,是通过一系列org.redisson.EvictionScheduler来实现定期清理的,但是经测试,时效性不能保证,面向小批量任务 分钟级别的延迟也比较大
    (eg:每个key10min过期,map共有20个任务,淘汰时延在10分钟之内,难道是我使用的姿势不对?)

  2. Redisson为所有实现了RMapCache或RLocalCachedMapCache接口的对象提供了监听以下事件的监听器:
    当部署多个服务实例时,初始化RMapCache的监听器之后,其实是在每个实例上都绑定了这些监听器,当RMapCache发生变化时,多个实例均能捕获到变化,并执行对应监听器里的代码片段===》个人理解,类似于发布订阅模式

    • 元素添加事件 | org.redisson.api.map.event.EntryCreatedListener
    • 元素过期事件 | org.redisson.api.map.event.EntryExpiredListener
    • 元素删除事件 | org.redisson.api.map.event.EntryRemovedListener
    • 元素更新事件 | org.redisson.api.map.event.EntryUpdatedListener
  3. 使用fastPut修改RMapCache中已存在key的ttl时,令ttl=0不生效;但令ttl != 0 均可生效?

    //key1不存在时,ttl=3s生效
    map.fastPut("key1", new SomeObject(), 3, TimeUnit.SECONDS)//key1存在时,令ttl=0,即永久保存key1,不生效
    map.fastPut("key1", new SomeObject(), 0, TimeUnit.SECONDS)

    那多个实例下,如何维护分布式环境下RMapCache中竞争资源的竞争?如何保证多实例下只有一个监听器被触发执行?即使加上分布式锁,也无法保证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值