磁盘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. Qt的目录依赖问题----怎样生成一个绿色的Qt软件包

    Qt的目录依赖问题----怎样生成一个绿色的Qt软件包 一.核心问题: 如果将编译好的Qt文件拷贝到任何目录下,作为一个绿色软件库来使用? 二.原理讨论 由于Qt在编译的时候将安装路径硬编码到了库文件 ...

  2. 统计难题(trie树)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

  3. 为《31天成为IT服务达人》征求正式名字

    写书时.没细想书的名字,仅仅是在想出本能够让同行或未来同行高速入门的书,如今想来还是应正式给他取个名,请朋友们帮忙哟

  4. 利用copy函数简单快速输出/保存vector向量容器中的数据

    如果要输出vector中的数据我们可以通过循环语句输出,更加简便的方法是利用copy函数直接输出,例子: #include "stdafx.h" #include <iost ...

  5. YUV / RGB 格式及快速转换算法

    1 前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用 的过程,所以在不同的应用领域中为了更好更准确 ...

  6. 高性能网站优化-创建快速响应的Web

    <高性能网站建设进阶指南> 优化原则 优化的目的是希望降低程序的整体开销. 减少开销 通常认为开销就是程序的执行时间.而在进行优化工作时,应该把重点放在对程序开销影响最大的那部分. 假设我 ...

  7. sass基本语法

    sass是一种基于ruby语言开发的CSS预处理器.它可以使用变量,嵌套,混入,继承,运算,函数等编程语言具有的特性进行CSS的开发,使得CSS的开发变得简单粗暴清晰可维护. sass有两种后缀文件格 ...

  8. String to Integer (atoi) - 复杂的测试

    这个题..是要把字符串转为整数.注意是整数,我看到整数的时候松了一口气,没有小数点的判断应该更好做.而且基本的转化函数我想每个程序员都无法忘记: res=res*+(str[i]-'); 其实就是这么 ...

  9. linux安装LNMP的资源

    wget http://nginx.org/download/nginx-0.7.69.tar.gz wget http://museum.php.net/php5/php-5.2.10.tar.gz ...

  10. js this [转]

    this是js的一个关键字,随着函数使用场合不同,this的值会发生变化.但是总有一个原则,那就是this指的是调用函数的那个对象. 1.纯粹函数调用. function test() { this. ...