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