前沿

在搜索引擎中,缓存被当做是不可缺少的部分,但是很多情况下,将缓存的实现过度依赖于分发服务器及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 入口,将此节点注释掉,并新增以下节点:
  1. <queryResultCache
  2. class="solr.MemcachedCache"
  3. memcachedHosts="192.168.0.100,192.168.0.101:1234,192.168.0.103"
  4. expTime="21600"
  5. defaultPort="11211"
  6. keyPrefix=""/>

重启SOLR,打开solr的状态展示页面,看之前的LRUCache是否被memcacheCache替换掉

http://192.168.1.109:8080/solr/novel/admin/stats.jsp

view plaincopy

  1. name:  queryResultCache
  2. class:  org.apache.solr.search.MemcachedCache
  3. version:  1.0
  4. description:  MemcachedCache([192.168.1.109], defaultPort:11211, expTime:21600, keyPrefix:)
  5. stats:  lookups : 2
  6. hits : 0
  7. hitratio : 0.00
  8. inserts : 3
  9. evictions : 0
  10. size : 0
  11. warmupTime : 0
  12. cumulative_lookups : 2
  13. cumulative_hits : 0
  14. cumulative_hitratio : 0.00
  15. cumulative_inserts : 2
  16. cumulative_evictions : 0
  17. indexVersion : 0

参数注明

  • memcachedHosts:memcached服务器IP ,多个中间用“,”号隔开
  • expTime:  失效时间  (单位:秒)
  • defaultPort :memcached使用端口号

使用memcached缓存 替代solr中的LRUCache缓存的更多相关文章

  1. 让App中加入LruCache缓存,轻松解决图片过多造成的OOM

    上次有过电话面试中问到Android中的缓存策略,当时模糊不清的回答,现在好好理一下吧. Android中一般情况下采取的缓存策略是使用二级缓存,即内存缓存+硬盘缓存->LruCache+Dis ...

  2. 让App中增加LruCache缓存,轻松解决图片过多造成的OOM

    上次有过电话面试中问到Android中的缓存策略,当时模糊不清的回答,如今好好理一下吧. Android中普通情况下採取的缓存策略是使用二级缓存.即内存缓存+硬盘缓存->LruCache+Dis ...

  3. Android-Universal-Image-Loader的缓存处理机制与使用 LruCache 缓存图片

    讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西.看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制. ...

  4. 阶段3 1.Mybatis_11.Mybatis的缓存_6 Mybatis中的一级缓存

    Mybatis中的一级缓存和二级缓存         一级缓存:             它指的是Mybatis中SqlSession对象的缓存.             当我们执行查询之后,查询的结 ...

  5. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记5——Direct3D中的顶点缓存和索引缓存

    第12章 Direct3D绘制基础 1. 顶点缓存 计算机所描绘的3D图形是通过多边形网格来构成的,网网格勾勒出轮廓,然后在网格轮廓的表面上贴上相应的图片,这样就构成了一个3D模型.三角形网格是构建物 ...

  6. Android二级缓存之物理存储介质上的缓存DiskLruCache

     Android二级缓存之物理存储介质上的缓存DiskLruCache Android DiskLruCache属于物理性质的缓存,相较于LruCache缓存,则DiskLruCache属于And ...

  7. 缓存机制总结(JVM内置缓存机制,MyBatis和Hibernate缓存机制,Redis缓存)

    一.JVM内置缓存(值存放在JVM缓存中) 我们可以先了解一下Cookie,Session,和Cache Cookie:当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cooki ...

  8. Mybatis的二级缓存、使用Redis做二级缓存

    目录 什么是二级缓存? 1. 开启二级缓存 如何使用二级缓存: userCache和flushCache 2. 使用Redis实现二级缓存 如何使用 3. Redis二级缓存源码分析 什么是二级缓存? ...

  9. solr中Cache综述

    一.概述 Solr查询的核心类就是SolrIndexSearcher,每个core通常在同一时刻只由当前的SolrIndexSearcher供上层的handler使用(当切换SolrIndexSear ...

随机推荐

  1. python 进程和线程的区别

    1.开进程的开销远大于开线程 import time from threading import Thread from multiprocessing import Process def piao ...

  2. c/c++面试45-50之字符串

    45 使用库函数将数字转换为字符串,下面是常用库函数 (1) itoa():将整型转换为字符串 (2)ltoa():将长整形转换为字符串 (3)gcvt():将浮点转换为字符串 46 不使用库函数将整 ...

  3. Flutter实战视频-移动电商-31.列表页_列表切换交互制作

    31.列表页_列表切换交互制作 博客地址:https://jspang.com/post/FlutterShop.html#toc-c42 点击左侧的大类右边的小类也跟着变化 新建provide 要改 ...

  4. 3-3 浮点型字面量 & 3-4浮点型案例

    双精度的浮点类型,末尾加d或者D 3-4浮点型案例 如果一个浮点类型的末尾什么也不写 他表示就是一个double类型的.所以这里定义报错了. float f=1234.328; 把一个范围大的数赋值给 ...

  5. PHP实用小程序(一)

    <? //设置路径(默认当前php文件所在路径) $basedir = "d:/inetpub/wwwroot"; $textrows = "20"; $ ...

  6. HDU - 1495 非常可乐 bfs互倒三杯水

    非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. SmartSql使用教程(3)——SmartSql中的事务,及AOP的使用

    一.引言 经过两章的铺垫,我们现在对SmartSql已经有了一定的了解,那么今天我们的主题是事务处理.事务处理是常用的一种特性,而SmartSql至少提供了两种使用事务的方法.一种是通过Reposit ...

  8. char*和CStringA互转

    char*->CStringA char* ch1 = "中文测试123"; CStringA str(ch1); CStringA->char* char* ch2 ...

  9. Lightoj 1067【逆元模板(求C(N,M))】

    #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef unsigned long long ...

  10. Unity5.0 EventSystem事件系统的详细说明

    http://www.manew.com/blog-56596-2917.html?_dsign=53b25d5d unity5.0开发了新的UI系统UGUI,附带的事件系统EventSystem不仅 ...