使用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 入口,将此节点注释掉,并新增以下节点:
 
  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   
  18.    

参数注明

  •     memcachedHosts:memcached服务器IP ,多个中间用“,”号隔开
  •     expTime:  失效时间  (单位:秒)
  •     defaultPort :memcached使用端口号
原文地址:https://www.cnblogs.com/rxingyue/p/4146886.html