我需要检测事件频率,例如在X秒内发生了N次相同的事件。
我的检测过程持续24/7执行。
我的初始设计使用ConcurrentHashMap
,键是一个自定义值对象,表示事件标识,事件发生时值为Joda DateTime
。
这种方法很适合检测事件频率但是我还必须实施驱逐程序来删除" Stale"事件
Google搜索了一种改进的方法,我发现com.google.common.cache.Cache
看起来很有前途,因为它的相关CacheBuilder
有.expireAfter#####()
,但不推荐使用Cache的所有get方法。显然我必须使用LoadingCache
。
LoadingCache
load()
方法的所有示例都显示通过访问数据库或其他"昂贵"来检索要加载的值。操作。这些都不适合我的用例。我有填充缓存所需的密钥和价值,我如何"加载"当我的值不在后端数据存储区中时,我的事件在缓存未命中?
我应该使用cache.put(Key, Value)
吗?