gpt4 book ai didi

java - System.currentMillis 用于跟踪 java 中的过期项目

转载 作者:可可西里 更新时间:2023-11-01 11:34:56 24 4
gpt4 key购买 nike

我正在编写一个单元,它将检查在过去 10 秒内添加的项目是否超过计数 10 的限制。如果在 10 秒内添加超过 10 个项目,我的应用程序将抛出异​​常。 Redis 没有机制来为集合或列表中的每个元素添加生存时间。为了解决这个问题,我在 Redis 中的每个调用中以连接格式存储当前的 Millis。每当用户在列表中添加一个项目时,我都会检查 10 个项目的时间戳和当前时间戳的差异是否大于 10 秒,我让它通过。如果不是,我将阻止该操作。

虽然这可行,但我正在寻找一种更好的方法来做到这一点。如果在此过程中有任何问题,需要反馈

最佳答案

您只需要一个 LRU(最近最少使用)缓存。如果您搜索一下,网络上有很多这方面的实现。

这是一个非常简单的例子,说明如何完成实现:

import java.util.LinkedHashMap;
import java.util.Map;

public LRUCache<K, V> extends LinkedHashMap<K, V> {
private int cacheSize;

public LRUCache(int cacheSize) {
super(16, 0.75, true);
this.cacheSize = cacheSize;
}

protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() >= cacheSize;
}
}

有了这个,您可以将一个项目添加到现金中,最旧的条目将被删除。您还可以检查某个项目是否存在于缓存中,以确定它最近是否已存储在缓存中。

希望对您有所帮助。

关于java - System.currentMillis 用于跟踪 java 中的过期项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36274129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com