java - 如何在 Java 中查询多个键的内存缓存?
问题描述
我在 rdms 和 csv 文件中有一些持久性数据(它们是独立的对象,但我想提一下,因为它们在不同的介质中,我不能使用 rdbms 提供的东西,实际上我不想去数据库在接下来的一个小时内,即使数据变旧)。我需要将数据存储在内存中以获得性能优势和查询(仅读取,无其他操作)对象,并每小时刷新一次数据。
在我的情况下,除了实现我自己的对象存储和查询方法之外,还有什么存储和查询内存对象的好方法?例如,您能否提供一个示例/链接来将 sql 查询替换为
select * from employees where emplid like '%input%' or surname like '%input%' or email like '%input%';
对虚拟查询感到抱歉,但它解释了可能的查询类型。
解决方案
去为自己找到一个具有所需功能的密钥存储实现。使用您的查询字符串作为键和结果作为值。 https://github.com/ben-manes/caffeine有很多功能,包括记录超时(比如一个小时)。
对于我自己的工作,我使用了一个 LRU 密钥库(仅限于 X 个条目),其中包含带有超时信息的对象,并且我在使用之前手动确定记录是否过时。LRU 基本上是一个链表,它将“读取”记录移动到列表的头部,并在添加的记录超出最大所需大小时丢弃尾部。这使商店中的流行记录保持更长时间。
推荐阅读
- netlogo - NetLogo 中 n-of 命令的调试代码
- c++ - SDL_PollEvent 导致我的窗口冻结
- java - How do I negate a phrase in a code generated regular expression?
- java - influxdb-java: org.influxdb.InfluxDBIOException: java.net.SocketException: Connection reset by peer: socket write error
- python - How to clean up tk.createcommand?
- javascript - 动态填充选择中的选择选项
- spring-boot - 在活动目录中更改密码时出错
- c++ - 如何从 scipy.minimize 迁移到 ceres-solver?
- scipy - 多元最小化/拟合结果的置信区间
- c++ - 有没有办法在视觉环境中使用 Win32 C++ 源代码?