作者:手机用户2502903557 | 来源:互联网 | 2023-05-19 14:11
Solr是基于Lucene的全文搜索服务器。实际上所有的搜索索引文件都是以文件形式存储在磁盘中。数据量到一定程度上,磁盘的IO会影响搜索性能。那么针对这种情况,我们优化的过程中势必需要
Solr是基于Lucene的全文搜索服务器。实际上所有的搜索索引文件都是以文件形式存储在磁盘中。数据量到一定程度上,磁盘的IO会影响搜索性能。那么针对这种情况,我们优化的过程中势必需要运用缓存技术。目前,我们熟知的缓存nosql数据库:redis、mongodb、memcache。不过,本文不在这里针对这些nosql数据库做讨论,本文主要是针对solr已经实现的缓存技术做探讨。
1、httpcache
<httpCaching never304="true" />
"solr.FastLRUCache"
size=
"512" initialSize=
"512" autowarmCount=
"0"/>
<queryResultCache class="solr.LRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
Document cache:这个是被用来缓存lucene documents的,就是存储field的那个东西。
注:这个缓存是短暂的,也不会自动更新。
<documentCache class="solr.LRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
配置参数:
1、Class:指定使用solr的哪种缓存机制。
我们通过三种缓存的配置可以看到,其实现主要是分为两种:solr.LRUCache和solr.FastLRUCache.
LRUCache:基于线程安全的LinkedHashMap实现。
FastLRUCache:基于ConcurrentHashMap实现。
2、Size:允许分配多少个实体(entity)的缓存空间。
3、initialSize:分配初始多少个实体(entity)的缓存空间。
4、autowarmCount:自动预装入实体数。
queryResultWindowSize:配合queryResultCache来使用。
简单来说:如果需要分页查询,那么配置为50,那么solr在查询的时候会缓存0-49个结果,那么翻页查询的时候就会直接从缓存中获取。
配置如下:
<queryResultWindowSize>20queryResultWindowSize>
这几种缓存,实际运用中需要根据查询的频率,缓存个数来具体设置,也需要实践观察。