探讨Hazelcast分布式map的驱逐策略实现

本文探讨了在营销系统中使用Hazelcast作为前置缓存的场景,由于分布式map(multiMap)不支持驱逐策略,转向使用imap并尝试通过监听器实现驱逐。然而,实践中发现Hazelcast无法注入到监听器中,尝试通过配置文件声明bean也未成功。最终,提出了使用单例模式来解决这一问题。
摘要由CSDN通过智能技术生成

1、背景介绍


      营销系统会承接来自收银台的活动查询的请求,理论上是一个1+的请求,通常这是指数级的增加。考虑使用hz做一个前置的缓存,使用请求参数的hash值为key(这里不讨论hash碰撞,事实上这对于业务是没有影响的),考虑到是集群分布所以分布式map是第一选择,无奈的是目前官方对于multiMap的驱逐策略实现是不支持的。


2、解题思路


     虽然分布式map不支持驱逐但是imap是支持驱逐的,能不能借助监听器实现共生呢?

     第一步先做一个工具类封装put方法,在方法内把值备份到分布式map

    

@Component("hazelcastHelper")
public class HazelcastHelper {
    @Resource(name = "crabMap")
    private IMap<Object, Object> hzMap;

    @Autowired
    private MultiMap<Object, Object> hzMultiMap;

    @Value("${multimap_expired_time}")
    private int EXPIRED_TIME;

    public IMap<Object, Object> getHzMap() {
        return hzMap;
    }

    public MultiMap<Object, Object> getHzMultiMap() {
        return hzMultiMap;
    }

    public HazelcastHe
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值