是否有任何适用于 java 的内存/缓存解决方案允许以某种形式查询缓存中对象的特定属性?
我意识到这是一个完整的数据库将被用于的东西,但我希望能够通过数据库的查询能力获得缓存的速度/性能。
是否有任何适用于 java 的内存/缓存解决方案允许以某种形式查询缓存中对象的特定属性?
我意识到这是一个完整的数据库将被用于的东西,但我希望能够通过数据库的查询能力获得缓存的速度/性能。
JBoss Cache 具有搜索功能。它被称为 JBossCacheSearchable。从网站:
这是 JBoss Cache 和 Hibernate Search 之间的集成包。
目标是为 JBoss Cache 添加搜索功能。我们通过使用 Hibernate Search 在用户对象被添加到缓存和修改时为它们建立索引来实现这一点。通过传入有效的 Apache Lucene 查询来查询缓存,该查询随后用于搜索索引并从缓存中检索匹配的对象。
JBoss Cache 主页面:http ://www.jboss.org/jbosscache/
JBossCacheSearch:http ://www.jboss.org/community/docs/DOC-10286
现在答案应该更新为Infinispan,它是 JBoss Cache 的继任者,并且搜索技术有了很大改进。
另一个想法是使用 Lucene 和 Directory 的 RAMDirectory 实现来索引您放入缓存的内容。这样,您就可以使用 Lucene 提供的所有搜索引擎查询功能进行查询。
在您的情况下,您可能会按原样(不使用分析器)索引对象的相关属性并使用布尔相等运算符进行查询。
Lucene 非常轻量级、高性能、线程安全且内存消耗低。
你可能想看看这个库:
http://casperdatasets.googlecode.com
这是一种数据集技术。它支持表格数据(来自数据库或在代码中构建),然后您可以针对数据集(和排序)构建查询和过滤器,所有这些都在内存中。它快速且易于使用。最重要的是,您可以对数据集上的任何列或属性执行查询。