在 ehcache 中有更多可搜索的属性会降低缓存的性能吗?

Will having more searchable attributes in ehcache reduce the performance of cache?

我正在开发一个使用 ehcache 的项目。我们正在大量使用搜索 API,并且有大约 5-7 个我们正在使用的值的搜索属性。

所以,我想知道有这么多搜索属性会降低缓存的性能吗?

在开源 Ehcache 中,搜索功能使用蛮力。这意味着搜索费用支付如下:

  1. 插入缓存时,搜索子系统将确保属性值与配置的预期类型匹配。
  2. 搜索时,您必须再次从映射中提取属性值 - 仅限于查询中使用的属性。

鉴于此,是的,属性的数量对 put 有直接的性能影响,但 none 对 get

EhCache 文档说明

Search operations perform in O(n) time.....The test shows search performance of an average of representative queries at 4.6 ms for a 10,000 entry cache, and 427 ms for a 1,000,000 entry cache. Accordingly, standalone implementation is suitable for development and testing.

When using standalone Ehcache without BigMemory for production, it is recommended to search only caches that are less than 1 million elements. Performance of different Criteria vary. For example, here are some queries and their execute times on a 200,000 element cache. (Note that these results are all faster than the times given above because they execute a single Criteria).

这里提到的两件重要事情是 - 不同标准的性能各不相同,如果有单个标准与多个标准,这很重要。虽然对性能的实际影响只能通过对您的用例进行基准测试才能发现 - 文档表明它有一些影响。最好的方法是自己对它进行基准测试。