Design patterns 缓存模式

Design patterns 缓存模式,design-patterns,caching,Design Patterns,Caching,如果我必须创建一个web服务来提供对字典的访问,我想最好不要对每个请求都启动SQL查询,而是将以前的结果保存在内存中,并且仅当直到现在还没有请求条目时才访问数据库 但这样一来,我的字典将增加,并最终在内存中拥有完整的SQL表 我在根据每个词条的使用频率搜索字典的一种清理模式。但“上次访问时间”不是一个好方法,也不是一个好方法,因为它将随着时间的推移而增长,并且不能反映我字典中条目的平均当前使用情况 有没有办法知道要丢弃哪些条目以尽可能多地保留DB访问权限?有许多开源产品正好解决了这个问题。我有很

如果我必须创建一个web服务来提供对字典的访问,我想最好不要对每个请求都启动SQL查询,而是将以前的结果保存在内存中,并且仅当直到现在还没有请求条目时才访问数据库

但这样一来,我的字典将增加,并最终在内存中拥有完整的SQL表

我在根据每个词条的使用频率搜索字典的一种清理模式。但“上次访问时间”不是一个好方法,也不是一个好方法,因为它将随着时间的推移而增长,并且不能反映我字典中条目的平均当前使用情况


有没有办法知道要丢弃哪些条目以尽可能多地保留DB访问权限?

有许多开源产品正好解决了这个问题。我有很好的经验,并为高负荷的网站

最常见的是“LRU”,表示“最近使用最少”。这是您提到的“最后访问时间”,在实践中效果相当好

维基百科有很多不同策略的例子,也许你可以找到一个适合你的:

我的字典将增加,并以内存中的完整SQL表结束-如何定义内存中的完整SQL表。您可以定义一个固定的内存大小吗? 如果是,那么您可能会创建一个固定大小的优先级队列。 第一个弹出的元素应该是命中频率最低的元素,您可以通过使用Comparable/Comparator接口来实现。 当队列已满且必须插入传入元素时,只需触发queue.pop(),然后插入传入元素。这样,您就可以继续清洁最不常用的设备。

如何定义“平均当前使用量”?