• 使用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使用端口号
  • 相关阅读:
    C# 中的 ConfigurationManager类引用方法
    添加Word,Excel等dll时如何操作。
    Win7(64位)中IIS配置Access数据库的asp.net程序中出现“未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序”
    sql模糊查询
    Spring中AOP的使用
    MongoDB的孤儿文档是如何产生的
    Docker
    MySql索引优化
    Kafka(分布式流式系统)
    synchronized的底层实现
  • 原文地址:https://www.cnblogs.com/rxingyue/p/4146886.html
Copyright © 2020-2023  润新知