使用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使用端口号