磁盘IO往往是计算机系统响应速度的一个突出瓶颈,搜索引擎查询很平凡,减少搜索过程中的磁盘IO对提升搜索响应速度无疑有莫大的帮助,在solr中,提供自带的缓存机制。我们只需要在solrconfig.xml中加几个配置项就可以了。

下面我们看看solr的3个缓存。

Filter cache:这个是被用来缓存过滤器(就是查询参数fq)的结果和基本的枚举类型。

Document cache:这个是被用来缓存lucene documents的,就是存储field的那个东西。

Query result cache:这个一目了然,把查询结果缓存起来。

一、缓存配置

Solr的缓存配置在solrconfig.xml文件的查询配置部分,也就是<query>和</query>标签之间。Solr实现了2种缓存机制,分别是LRUCache、FastLRUCache;

LRUCache:基于线程安全的LinkedHashMap实现。

FastLRUCache:基于ConcurrentHashMap实现。

单线程的情况下FastLRUCache具有更快的gets操作和比较慢的puts操作,因此使用它的查询命中率会高出LRUCache 75%,当然在多线程的情况下差距可能更大。

参数说明:

Class:指定使用solr的哪种缓存机制。

Size:允许分配多少个实体(entity)的缓存空间。

initialSize:分配初始多少个实体(entity)的缓存空间。

autowarmCount:自动预装入实体数。

1、  Filter cache

[html] view
plain
copy

  1. <filterCache
  2. class="solr.FastLRUCache"
  3. size="200"
  4. initialSize="200"
  5. autowarmCount="100"/>

2、Documentcache

[html] view
plain
copy

  1. <queryResultCache
  2. class="solr.FastLRUCache"
  3. size="500"
  4. initialSize="500"
  5. autowarmCount="250"/>

3、Queryresult cache

[html] view
plain
copy

  1. <documentCache
  2. class="solr.FastLRUCache"
  3. size="11000"
  4. initialSize="11000" />

4、查询结果窗口值设置

查询结果窗口值是和Query result cache配合使用的。这个值是个什么概念呢,就是我设置查询结果窗口值为50,我查询20到30条的数据,第一次查询的时候solr会从索引库中取出0到49条的数据,我翻页的时候就不用再到索引库里面去查询了,直接从缓存里面取就可以了,大大的提高了查询响应速度。

[html] view
plain
copy

  1. <queryResultWindowSize>50</queryResultWindowSize>

二、完整配置

[html] view
plain
copy

  1. <!--缓存配置-->
  2. <query>
  3. <!--过滤器cache-->
  4. <filterCache
  5. class="solr.FastLRUCache"
  6. size="200"
  7. initialSize="200"
  8. autowarmCount="100"/>
  9. <!--查询结果cache-->
  10. <queryResultCache
  11. class="solr.FastLRUCache"
  12. size="500"
  13. initialSize="500"
  14. autowarmCount="250"/>
  15. <!--文档cache-->
  16. <documentCache
  17. class="solr.FastLRUCache"
  18. size="11000"
  19. initialSize="11000" />
  20. <queryResultWindowSize>200</queryResultWindowSize>
  21. </query>

Solr4.7缓存技术的更多相关文章

  1. 网站缓存技术总结( ehcache、memcache、redis对比)

    网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验. 网站缓存按照存放的地点不同,可以分为客户端缓存. ...

  2. ASP.NET Core 缓存技术 及 Nginx 缓存配置

    前言 在Asp.Net Core Nginx部署一文中,主要是讲述的如何利用Nginx来实现应用程序的部署,使用Nginx来部署主要有两大好处,第一是利用Nginx的负载均衡功能,第二是使用Nginx ...

  3. .Net环境下的缓存技术介绍 (转)

    .Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1         概念 ...

  4. [.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术

    [.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率 ...

  5. 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)

    上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下redis的一些高级特性. 安全性设置 设置客户端操作秘密 redis安装 ...

  6. 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装

    redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...

  7. PHP开发中的缓存技术汇总

    在PHP开发中,出于对网站服务器负载的考虑,往往需要对页面.数据等内容进行缓存处理,下面就来看看,在PHP开发中有哪些缓存方式吧. 1.页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存, ...

  8. .Net环境下的缓存技术介绍

    .Net环境下的缓存技术介绍 摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1         概念 1.1 ...

  9. ASP.NET 缓存技术分析

    缓存功能是大型网站设计一个很重要的部分.由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.可能的情况下尽量使用缓存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大 ...

随机推荐

  1. php文件链接数据库基本代码

    <?php $conn=@mysql_connect("localhost","root",""); if($conn==null) ...

  2. kinect for windows - DepthBasics-D2D详解之三

    这篇文章我们将总结一下,之前两篇文章中提到的Kinect SDK的函数接. 函数接口: NuiGetSensorCount: 获取连接的Kinect设备个数 原型:_Check_return_ HRE ...

  3. HDU 1849 Rabbit and Grass

    题解:因为棋子可重叠,所以就等于取石子问题,即尼姆博弈,SG[i]=i,直接将输入数据异或即可. #include <cstdio> int main(){ int SG,n,a; whi ...

  4. java线程学习——汉堡销售问题

    汉堡店中有一个负责做汉堡的厨师,一个负责销售的营业员,用java线程表示他们的营业过程: 问题原型就是生产者与消费者的问题. 首先定义一个汉堡包箱子类与几个相关的变量类: public class H ...

  5. The Longest Straight(二分,离散化)

     Problem 2216 The Longest Straight Accept: 7    Submit: 14 Time Limit: 1000 mSec    Memory Limit : 3 ...

  6. PHP移动互联网开发(1)——环境搭建及配置

    原文地址:http://www.php100.com/html/php/rumen/2014/0326/6702.html 一.PHP5.4环境搭配基本流程 Apache:Web服务提供者.官网:ww ...

  7. Objective-c 数据类型

    这里列出Objective-c中独有数据类型: 一.字符串 在Objective-c中,字符串常量是由@和一对从引号括起的字符串序列.比如:@"China".@"obje ...

  8. Iterator(迭代器)接口 --对象循环遍历

    <?php class MyIterator implements Iterator { private $var = array(); public function __construct ...

  9. r语言之生成随机序列,随机数生成函数及用法

    (1)生成正态分布随机数: rnorm(n,mean,sd)     其中,n表示生成的随机数个数,mean表示正态分布均值,sd表示正态分布标准差 > rnorm(5,0,2)[1] -5.3 ...

  10. python3基本框架