首页 > 解决方案 > 如何在 Java 中查询多个键的内存缓存?

问题描述

我在 rdms 和 csv 文件中有一些持久性数据(它们是独立的对象,但我想提一下,因为它们在不同的介质中,我不能使用 rdbms 提供的东西,实际上我不想去数据库在接下来的一个小时内,即使数据变旧)。我需要将数据存储在内存中以获得性能优势和查询(仅读取,无其他操作)对象,并每小时刷新一次数据。

在我的情况下,除了实现我自己的对象存储和查询方法之外,还有什么存储和查询内存对象的好方法?例如,您能否提供一个示例/链接来将 sql 查询替换为

select * from employees where emplid like '%input%' or surname like  '%input%' or email like  '%input%';

对虚拟查询感到抱歉,但它解释了可能的查询类型。

标签: javacaching

解决方案


去为自己找到一个具有所需功能的密钥存储实现。使用您的查询字符串作为键和结果作为值。 https://github.com/ben-manes/caffeine有很多功能,包括记录超时(比如一个小时)。

对于我自己的工作,我使用了一个 LRU 密钥库(仅限于 X 个条目),其中包含带有超时信息的对象,并且我在使用之前手动确定记录是否过时。LRU 基本上是一个链表,它将“读取”记录移动到列表的头部,并在添加的记录超出最大所需大小时丢弃尾部。这使商店中的流行记录保持更长时间。


推荐阅读