0

我需要检测事件频率,例如在 X 秒内发生了 N 个相同的事件。

我的检测过程 24/7 连续执行。

我最初的设计采用了 a ConcurrentHashMap,key 是一个自定义值对象,代表事件标识,值是Joda DateTime事件发生的时间。

这种方法可以很好地检测事件频率,但是我还必须实施一个驱逐过程来删除“陈旧”事件。

谷歌搜索我发现的一种改进方法com.google.common.cache.Cache,它看起来很有希望,因为它的相关CacheBuilder.expireAfter#####(),但是所有 Cache 的 get 方法都被弃用了。显然我必须使用LoadingCache.

方法的所有示例都LoadingCache load()显示了通过访问数据库或其他“昂贵”操作来检索要加载的值。这些都不适合我的用例。我有填充缓存所需的键和值,当我的值不驻留在后端数据存储中时,如何在缓存未命中时“加载”我的事件?

我应该使用cache.put(Key, Value)吗?

4

0 回答 0