使用memcached缓存 替代solr中的LRUCache缓存
前沿
在搜索引擎中,缓存被当做是不可缺少的部分,但是很多情况下,将缓存的实现过度依赖于分发服务器及webserver会很大程度上加重webserver 的负担,具体表现就是经常性的假死,拒绝服务,因此为了解放前端转发服务器,我们将使用solr + memcache后端搭档组合实现缓存。
前期准备条件:
点击下面的下载地址,将memcache必备的工具包和java类下载至本地
memcached-2.2.jar
spy-2.4.jar
下载地址:
http://solr-side.googlecode.com/files/solr-memcache.zip
操作步骤:
- 将solr-memcache.zip解压到一个文件夹中,打开文件夹
- 将solr-memcache文件夹下lib文件夹中的memcached-2.2.jar 和 spy-2.4.jar 剪切到solr项目中的lib文件夹下,并做好相关引用。
- 将这个solr-memcahe文件夹中 src/main/java/org/apache/solr/search 中的 MemcachedCache.java 文件放至solr项目中指定的包的位置 : org.apache.solr.search
- 在solr项目中 org.apache.solr.search 找到DocSet.java
- 使得 该文件中的 DocSetBase 类 实现 Serializable 接口以支持序列化。
- 修改solrconfig.xml 文件,找到 queryresultCache 入口,将此节点注释掉,并新增以下节点:
- <queryResultCache
- class="solr.MemcachedCache"
- memcachedHosts="192.168.0.100,192.168.0.101:1234,192.168.0.103"
- expTime="21600"
- defaultPort="11211"
- keyPrefix=""/>
重启SOLR,打开solr的状态展示页面,看之前的LRUCache是否被memcacheCache替换掉
http://192.168.1.109:8080/solr/novel/admin/stats.jsp
- name: queryResultCache
- class: org.apache.solr.search.MemcachedCache
- version: 1.0
- description: MemcachedCache([192.168.1.109], defaultPort:11211, expTime:21600, keyPrefix:)
- stats: lookups : 2
- hits : 0
- hitratio : 0.00
- inserts : 3
- evictions : 0
- size : 0
- warmupTime : 0
- cumulative_lookups : 2
- cumulative_hits : 0
- cumulative_hitratio : 0.00
- cumulative_inserts : 2
- cumulative_evictions : 0
- indexVersion : 0
参数注明
- memcachedHosts:memcached服务器IP ,多个中间用“,”号隔开
- expTime: 失效时间 (单位:秒)
- defaultPort :memcached使用端口号
使用memcached缓存 替代solr中的LRUCache缓存的更多相关文章
- 让App中加入LruCache缓存,轻松解决图片过多造成的OOM
上次有过电话面试中问到Android中的缓存策略,当时模糊不清的回答,现在好好理一下吧. Android中一般情况下采取的缓存策略是使用二级缓存,即内存缓存+硬盘缓存->LruCache+Dis ...
- 让App中增加LruCache缓存,轻松解决图片过多造成的OOM
上次有过电话面试中问到Android中的缓存策略,当时模糊不清的回答,如今好好理一下吧. Android中普通情况下採取的缓存策略是使用二级缓存.即内存缓存+硬盘缓存->LruCache+Dis ...
- Android-Universal-Image-Loader的缓存处理机制与使用 LruCache 缓存图片
讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西.看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制. ...
- 阶段3 1.Mybatis_11.Mybatis的缓存_6 Mybatis中的一级缓存
Mybatis中的一级缓存和二级缓存 一级缓存: 它指的是Mybatis中SqlSession对象的缓存. 当我们执行查询之后,查询的结 ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记5——Direct3D中的顶点缓存和索引缓存
第12章 Direct3D绘制基础 1. 顶点缓存 计算机所描绘的3D图形是通过多边形网格来构成的,网网格勾勒出轮廓,然后在网格轮廓的表面上贴上相应的图片,这样就构成了一个3D模型.三角形网格是构建物 ...
- Android二级缓存之物理存储介质上的缓存DiskLruCache
Android二级缓存之物理存储介质上的缓存DiskLruCache Android DiskLruCache属于物理性质的缓存,相较于LruCache缓存,则DiskLruCache属于And ...
- 缓存机制总结(JVM内置缓存机制,MyBatis和Hibernate缓存机制,Redis缓存)
一.JVM内置缓存(值存放在JVM缓存中) 我们可以先了解一下Cookie,Session,和Cache Cookie:当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cooki ...
- Mybatis的二级缓存、使用Redis做二级缓存
目录 什么是二级缓存? 1. 开启二级缓存 如何使用二级缓存: userCache和flushCache 2. 使用Redis实现二级缓存 如何使用 3. Redis二级缓存源码分析 什么是二级缓存? ...
- solr中Cache综述
一.概述 Solr查询的核心类就是SolrIndexSearcher,每个core通常在同一时刻只由当前的SolrIndexSearcher供上层的handler使用(当切换SolrIndexSear ...
随机推荐
- Flutter实战视频-移动电商-62.购物车_首页Provide化 让跳转随心所欲
62.购物车_首页Provide化 让跳转随心所欲 新建provide/currentIndex.dart 内容比较简单,定义一个变量当前页面的索引currentIndex,再定义一个方法改变它的值 ...
- CCF 201512-3 画图 (DFS搜索+模拟)
问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术.例如,下图是用 ASCII 字符画出来的 CSPRO 字样. ..____.____..____. ...
- 《剑指offer面试题4》替换空格——实现函数把字符串中每个空格替换成“%20”
思路: 例如把we are happy这个字符串中所有空格替换成"%20",最直接的做法是从头开始扫苗,遇到空格就替换,并且把空格后面的字符都顺序后移.复杂度O(n^2). 重要思 ...
- POJ1699【AC自动机+状压DP_感言】
萌新感言: 我的天呐! 因为是AC自动机的专题所以没有管别的...硬着头皮吃那份题解(代码)..[请戳简单美丽可爱的代码(没开玩笑)] 首先讲AC自动机: tag存的是以这个节点为后缀的字符串个数(已 ...
- ZOJ3163【思维题】
每天取最远的那面 int main() { init(); int n,x,y; while(~scanf("%d%d%d",&n,&x,&y)) prin ...
- JAG Practice Contest for ACM-ICPC Asia Regional 2016B题【BFS】
题意: 就是公主要逃跑,士兵要抓公主,问你能不能逃跑哇: 思路: 就是终点搞成起点,然后BFS一下就好了,最后枚举一下出口到公主的距离是不是<所有的到士兵的距离: #include <bi ...
- Mol Cell Proteomics. |王欣然| 基于微粒的蛋白聚合物捕获技术让能满足多种不同需求的蛋白质组学样品制备方法成为可能
大家好,本周分享的是发表在Molecular & Cellular Proteomics. 上的一篇关于蛋白质组学样本质谱分析前处理方法改进的文章,题目是Protein aggregation ...
- Elasticsearch学习记录(分布式的特性)
Elasticsearch学习记录(分布式的特性) 分布式的特性 我们提到Elasticsearch可以扩展到上百(甚至上千)的服务器来处理PB级的数据.然而我们的例子只给出了一些使用Elastics ...
- JAVASCRIPT一维数转化为二维数组
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- css-bootstrap
CSS概览 基本的bootstrap包含三个文件,引入到html页面中 <link href="{% static 'css/bootstrap.min.css' %}" r ...