Ehcache 查找策略:精细键与查询

Ehcache lookup strategy : finesse key vs query

开始使用 ehcache。与较新版本一样,我们可以对值属性进行搜索,因此对于给定的缓存,我们可以搜索并获得结果。

例如,假设我的站点正在缓存我的应用程序服务器启动时的所有用户详细信息,并且对于新用户注册,我使用了写入缓存。现在,当用户登录时,我会查找缓存并获得一些详细信息。

这是我所做的,键:"userId" 值:new User("name",age);

现在,当需要时,我想找到所有年龄在 30 岁以上的用户,然后我可以使用搜索查询来检索数据集。事实证明,这比 100 万数据要慢,对于 500 万次点击,它几乎是 2 到 3 秒。

我的另一个想法:例如将带有年龄的键作为字符串 键:"userId#age",值为:新用户("name",年龄)

现在不使用查询,而是使用键模式查找键:例如(anyuser#[(nextchar 以 3 开头)最多 2 个字符),以及 return 结果。

我想知道三件事。

  1. 第二个想法可以用ehcache实现吗?如果是这样,这会是表演者吗?

  2. 我在查询搜索中做错了什么?占用2秒肯定是不符合ehcache承诺的。

  3. 密钥命名的一般策略是什么?它应该是随机的(我不知道这什么时候有用),它是否应该包含一个以可以搜索的方式连接的值?

使用相同的编号回答您的问题:

  1. 不,Ehcache 除了使用搜索功能外,没有允许使用密钥模式恢复映射的方法。
  2. 您的搜索查询可能没有任何问题。 OpenSource Ehcache 搜索是一种不依赖索引创建的强力解决方案。所以当你有很多条目时它会很慢。
  3. 密钥命名由您决定 - 特别是给出 1 的答案。

您可以为您的用例做的是维护作为查询答案的缓存条目。 Like key usersAbove30 with as value a list of all users matching the condition in the key.