如何在Java中查询多个键的内存缓存?

时间:2019-02-25 00:58:14

标签: java caching

我在rdms和csv文件中有一些持久性数据(它们是独立的对象,但是我想提一下它们,因为它们位于不同的介质中,  我无法使用rdbms所提供的功能,实际上我不想在下一个小时就去数据库,即使数据变旧了也是如此。我需要将数据存储在内存中以提高性能,并根据对象的多列查询(仅读取,无其他操作),并每小时刷新一次数据。

就我而言,除了实现自己的对象存储和查询方法以外,还有什么是存储和查询内存中对象的好方法?例如,您能否提供一个示例/链接将sql查询替换为

public class ExpandableEditor : Editor
{
    public ExpandableEditor()
    {
        TextChanged += OnTextChanged;
    }

    ~ExpandableEditor()
    {
        TextChanged -= OnTextChanged;
    }

    private void OnTextChanged(object sender, TextChangedEventArgs e)
    {
        InvalidateMeasure();
    }
}

对于虚拟查询很抱歉,但它说明了可能的查询类型。

1 个答案:

答案 0 :(得分:0)

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

对于我自己的工作,我使用包含超时信息的对象的LRU密钥存储库(限于X项),并且在使用之前手动确定记录是否陈旧。 LRU基本上是一个链接列表,当添加的记录超过最大所需大小时,它会将“已读”记录移到列表的开头,而将尾部删除。这样可以使商店中的热门记录保存更长的时间。