当前位置: 首页 > 知识库问答 >
问题:

可搜索的 Ehcache 索引 - 有哪些选项?

慕承恩
2023-03-14

Ehcache的2.5.x文档指出,它的标准实现提供了不依赖于索引的缓存搜索特性,并设法产生良好的性能(

该文档进一步指出,通过使用分布式缓存实现(“由Terracotta服务器阵列支持”),可以获得索引的好处。然而,似乎没有一种解决方案可以解决超过100万个元素的小型缓存,其大小足够小,不需要分发(我们的方案可以在~1Gb的缓存中容纳120万个元素)。

有没有人找到一种解决方法/解决方案来为这种情况提供索引,或者这是否需要一些大锤式的方法来分发缓存?

目前还不清楚这个索引功能是否需要商业兵马俑许可证(我的印象是,部分兵马俑产品是免费提供的,尽管显然没有支持?

共有1个答案

庄欣然
2023-03-14

我认为EhCache索引功能与Terracotta无关。它是EhCache的核心功能。我正在使用由Terracotta商业版本支持的Ehcache和Ehcache。

当您提供ehcache时。在xml配置中,您必须指定哪些字段是可搜索的(这将在每次缓存或更新/删除新对象时触发Lucene的索引活动)

下面是此类配置的示例(我已根据您的要求设置了 maxBytesLocalHeap=“1024m”):

<?xml version="1.0" encoding="UTF-8"?>
<ehcache maxBytesLocalHeap="1024m">
 <sizeOfPolicy maxDepth="2000" />
 <defaultCache eternal="false" timeToLiveSeconds="600"/>
 <cache name="myCacheablePOJO" eternal="true" statistics="true">
  <searchable>
   <searchAttribute name="field1" />
   <searchAttribute name="field2" />
   <searchAttribute name="field3" />
  </searchable>
 </cache>
</ehcache>

当您使用基于 Terracotta 的 EhCache API 实现时,您必须在类路径上添加其他 jar,并在配置中启用 terracotta:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache maxBytesLocalHeap="1.3g">
 <sizeOfPolicy maxDepth="2000" />
 <defaultCache eternal="false" timeToLiveSeconds="600">
  <terracotta/>
 </defaultCache>
 <cache name="myCacheablePOJO" eternal="true" statistics="true">
  <searchable>
   <searchAttribute name="field1" />
   <searchAttribute name="field2" />
   <searchAttribute name="field3" />
   </searchable>
   <terracotta compressionEnabled="true" />
 </cache>
</ehcache>

请注意,我已经将“terracotta”标记添加到缓存name=“myCacheablePOJO”中,并带有一个可选属性以启用缓存中的对象压缩(节省内存空间并降低部分性能成本)。

因此,换句话说,您应该可以在本地EhCache中使用1.2M元素,而无需兵马俑聚类。您应该考虑的唯一问题是故障转移。您应该问自己以下问题:

  • 我的系统缓存策略是什么
  • 在JVM崩溃的情况下,系统能够承受丢失缓存数据的代价吗
  • 在JVM重启的情况下,如何在本地缓存中填充数据
 类似资料:
  • 我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!

  • 问题内容: 我在某些表上有许多索引,它们都相似,并且我想知道聚集索引是否在正确的列上。以下是两个最活跃索引的统计信息: 如您所见,经常搜索PK,但是对i3_identity列的所有搜索也正在对此PK进行关键查找,因此,我是否真的从I3_Identity的索引中受益匪浅?我应该改为使用I3_Identity作为群集吗?由于此表结构在我工作的地方重复了大约10000次,因此可能会产生巨大的影响,因此,

  • 我使用< code > Hibernate Search 4 . 5 . 1 编写了< code>Spring web-app。当我尝试搜索时,它返回一个条目列表。我认为索引中的问题。用于索引的目录已创建,但实体保存文件后,目录中的文件不变。 这是我的Spring配置文件 我的实体文件

  • bugu-mongo 2.x版本集成了Lucene的功能。当往MongoDB中新增一个Document时,能自动为该Document建立Lucene索引。相应的,当MongoDB中的Document被修改、删除时,对应的Lucene索引也会修改、删除。 另外,bugu-mongo还提供了对Lucene搜索的支持。根据Lucene索引进行搜索的时候,搜索结果能自动转换成对应的Entity对象。 在L

  • java和spring MVC/spring Boot中有哪些不同的客户端可用于弹性搜索?它们之间的区别和各自的优点是什么?哪一个更好地与spring boot一起用于查询和源代码过滤?

  • 搜索引擎分为两部分: 时间筛选 和 搜索引擎 (详情) 1.时间筛选 便捷按钮有今日、昨日、前日、上周 X、近七天,并且能自定义选择时间段来得出想要的结果报表 2.搜索引擎 (时间段详情) 选择日期,查看来自对应时间段内,各个搜索引擎的访问量比例