假设我们得到一个数据结构清晰的流字符串输入:content:arrive time
示例如下:
AAA : 12:00:00
ABC : 12:00:01
ABB : 12:00:02
ABM : 12:00:11
我们有一个程序来检查这个流输入如果
1)此内容以前不存在,打印此内容;
2)如果此内容到达之前且时间跨度小于10秒,则打印为空;
3)如果此内容提前到达且时间跨度超过10秒,则打印内容;
Hashtable(String, Date)是OK的,我们可以在有新数据时更新日期。
我的问题是:如果字符串数非常大,不能存储在哈希表中怎么办?考虑到我们正在设计一个24*7运行的程序,哈希表变得越来越大。
我们还有其他办法解决这个问题吗?我们能用几台服务器解决这个问题吗?
您可以使用Hashtable(String -> Date)
和简单的Queue([Date, String])
,每次向哈希表添加新项目时也将其添加到队列中。
每隔几分钟从队列中弹出项并从哈希表中删除它们,直到日期不够老(<10秒)。
这样你只保存最近几分钟的数据,哈希表和队列都不会增长太多。