Solr4.7缓存技术
磁盘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
- <filterCache
- class="solr.FastLRUCache"
- size="200"
- initialSize="200"
- autowarmCount="100"/>
2、Documentcache
- <queryResultCache
- class="solr.FastLRUCache"
- size="500"
- initialSize="500"
- autowarmCount="250"/>
3、Queryresult cache
- <documentCache
- class="solr.FastLRUCache"
- size="11000"
- initialSize="11000" />
4、查询结果窗口值设置
查询结果窗口值是和Query result cache配合使用的。这个值是个什么概念呢,就是我设置查询结果窗口值为50,我查询20到30条的数据,第一次查询的时候solr会从索引库中取出0到49条的数据,我翻页的时候就不用再到索引库里面去查询了,直接从缓存里面取就可以了,大大的提高了查询响应速度。
- <queryResultWindowSize>50</queryResultWindowSize>
二、完整配置
- <!--缓存配置-->
- <query>
- <!--过滤器cache-->
- <filterCache
- class="solr.FastLRUCache"
- size="200"
- initialSize="200"
- autowarmCount="100"/>
- <!--查询结果cache-->
- <queryResultCache
- class="solr.FastLRUCache"
- size="500"
- initialSize="500"
- autowarmCount="250"/>
- <!--文档cache-->
- <documentCache
- class="solr.FastLRUCache"
- size="11000"
- initialSize="11000" />
- <queryResultWindowSize>200</queryResultWindowSize>
- </query>
Solr4.7缓存技术的更多相关文章
- 网站缓存技术总结( ehcache、memcache、redis对比)
网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验. 网站缓存按照存放的地点不同,可以分为客户端缓存. ...
- ASP.NET Core 缓存技术 及 Nginx 缓存配置
前言 在Asp.Net Core Nginx部署一文中,主要是讲述的如何利用Nginx来实现应用程序的部署,使用Nginx来部署主要有两大好处,第一是利用Nginx的负载均衡功能,第二是使用Nginx ...
- .Net环境下的缓存技术介绍 (转)
.Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 ...
- [.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术
[.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率 ...
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下redis的一些高级特性. 安全性设置 设置客户端操作秘密 redis安装 ...
- 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装
redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...
- PHP开发中的缓存技术汇总
在PHP开发中,出于对网站服务器负载的考虑,往往需要对页面.数据等内容进行缓存处理,下面就来看看,在PHP开发中有哪些缓存方式吧. 1.页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存, ...
- .Net环境下的缓存技术介绍
.Net环境下的缓存技术介绍 摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 1.1 ...
- ASP.NET 缓存技术分析
缓存功能是大型网站设计一个很重要的部分.由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.可能的情况下尽量使用缓存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大 ...
随机推荐
- Nexus 5完全拆解
Nexus 5,由LG制造,配备高通骁龙四核处理器,4.95英寸1080P显示屏,支持4G LTE,运行最新的Android 4.4 KitKat原生操作系统.国外著名拆解网站iFixit第一时间带来 ...
- Windows 8.1 IIS 8.5 远程管理 Windows 2008 R2 IIS 7.0
案例: Windows 8.1 x64 IIS 8.5 inetmgr_amd64_v1.1_en-US.msi Windows 2008 R2 x64 IIS 7.0 在Win8.1 通过IIS ...
- python使用easygui写图形界面程序
我 们首先下载一个类库easygui,它是一个Python用于简单开发图形化界面的类库,打开easygui的下载网页 http://sourceforge.net/projects/easygui/? ...
- HDU 2852 KiKi's K-Number
权值线段树 #include <cstdio> #include <cstring> const int N=200000,M=220000; int k,q,x,y,sum[ ...
- 实现最小宽度的几种方法及CSS Expression[转]
实现最小宽度的几种方法及CSS Expression[转] 实现最小宽度的几种方法:css表达式尽量不用 支持FF IE7 IE6 .test { background:blue; min-widt ...
- HDOJ Sudoku Killer(dfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1426 思路分析:该问题为数独问题,明显解是唯一的,所有采用dfs搜索效果更好: 在搜索时,可以通过3个 ...
- vi 替换命令“找不到模式”解决
在linux vi编辑工具中使用替换命令操作时,会出现明明有匹配查找模式的数据.却报"找不到模式"问题. 原因是vi s///替换操作缺省针对行,若要生效,则须要将光标移动到指定行 ...
- 拿出来分享了!VIP珍藏!!!全网最齐全的 DEDECMS模板 全盘下载地址列表!没有你找不到的!
拿出来分享了!VIP珍藏!!!全网最齐全的 DEDECMS模板 网盘地址!没有你找不到的! 模板类型最齐全: ----------------------优美的走起!------------ 一:DE ...
- java中常见的单例模式详解
很多求职者在面试过程中都被问到了单例模式,最常见的问题,比如,每种单例模式的区别是什么?哪些模式是线程安全的?你们项目里用的哪种单例模式?原来没有注意这个问题,回来赶紧打开项目查看了一下代码,才发现我 ...
- SQL 插入语句汇总
INSERT VALUES 插入一行或多行到目标表中 -- single row INSERT INTO Sales.MyOrders(custid, empid, orderdate, shipco ...
