zoukankan      html  css  js  c++  java
  • 在Windows Server 2008上配置Memcached

    一、背景

    •  最近公司开发一款软件,需要用到Memcached做缓存,很自然地,这个任务落到了我的头上。Memcached我听过,也作为客户端调用过。不过只是使用别人封装好的客户端和调用部署好的服务端而已,真正动手自己安装部署和调用还真是头一次。简单了解了一下Memcached的历史,一边读一边忘,就当了解了吧。简单一句话概括就是:客户端不互相通信的分布式缓存系统。最近也在看这个站,http://memcached.org/

     二、安装

    • 首先下载Memcached服务端,下载一个稳定版本。至于下载地址,那啥一下,你就知道
    • 安装
    • 1、首先把下载的文件拷贝到一个指定的目录,比如D:\memcached

      2、运行-》CMD-》打开命令行工具,输入D:\memcached\memcached.exe -h,进入帮助,查看memcached的基本设置命令,不截图了,命令有很多,捡几个我认为比较常用的解释一下:

      -p 监听的端口
      -l 连接的IP地址, 默认是本机。(是大写的i啊)
      -d start 启动memcached服务
      -d restart 重起memcached服务
      -d stop|shutdown 关闭正在运行的memcached服务
      -d install 安装memcached服务
      -d uninstall 卸载memcached服务
       -m 最大内存使用,单位MB。默认64MB
      -M 内存耗尽时返回错误,而不是删除项
      -c 最大同时连接数,默认是1024

      3、上面的命令看完了,那就用吧。D:\memcached\memcached.exe -d install,很简单,安装好了。

      在执行安装命令的时候,可能会遇到当前用户权限不足的情况,会出现“failed to install service or service already installed”,此时右键点击memcache.exe,属性-》兼容性-》已管理员身份运行此程序就可以了。

      4、再运行D:\memcached\memcached.exe -d start,此时Memcached就作为一个Windows服务每次随开机自动启动,你就不用管它了。

      5、可以使用telnet命令查看运行情况,telnet 127.0.0.1 11211,然后输入stats命令即可看到各项数据。11211为默认端口

    • 配置

    memcached安装完毕之后,配置均使用默认项,此时要更改这些参数要如何做呢。比如修改最大内存使用,64M显然不算大,改成2048试试?

    因为memcached是以Windows服务的形式存在于Windows中的,所以需要修改该服务的启动参数,在他每次东西的时候把这些参数给他。

    修改注册表:CMD-》regedit-》HKEY_LOCAL_MACHINE-》System-》CurrentControlSet-》services-》memcached,修改ImagePath的值为你想要的,比如:"D:\memcached\memcached.exe" -d runservice -p 11212 -c 2048 -m 4096。

     三、调用

    服务端配置完了,然后就是客户端调用了。目前有很多版本的客户端封装,用的较多的应该是Enyim和Memcached Provider了吧。据说Memcached Provider是把Enyim给包了。。。。。。好吧,就是包了,还没花钱。

    1、引用dll。分别是Enyim.Caching.dll、log4net.dll、MemcachedProviders.dll。

    2、修改配置文件

    configSections节点下增加:

    <section name="cacheProvider" type="MemcachedProviders.Cache.CacheProviderSection, MemcachedProviders"
            allowDefinition
    ="MachineToApplication" restartOnExternalChanges="true"/>
    <sectionGroup name="enyim.com">
       
    <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
    </sectionGroup>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>

    configuration节点下增加:

    <enyim.com>
       
    <memcached>
           
    <servers>
               
    <!-- put your own server(s) here-->
               
    <add address="172.21.5.11" port="11211" />
           
    </servers>
           
    <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
       
    </memcached>
    </enyim.com>

    在configuration节点下增加Log4net的配置:

    <log4net>
       
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
           
    <layout type="log4net.Layout.PatternLayout">
               
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}]- %message%newline" />
           
    </layout>
       
    </appender>
       
    <root>
           
    <priority value="WARN"/>
           
    <appender-ref ref="ConsoleAppender">
               
    <filter type="log4net.Filter.LevelRangeFilter">
                   
    <levelMin value="WARN"/>
                   
    <levelMax value="FATAL"/>
               
    </filter>
           
    </appender-ref>
       
    </root>
    </log4net>

    3、调用代码

    public void TestMethod1()
    {
     
    string key = "key1";
     
    string value = "value1";
      DistCache.Add(key, value);                            

      Thread.Sleep(500);
     
    string ret = DistCache.Get(key).ToString(); 
     }

    四、总结

    写了一个多小时,总算写完了,累死我了。

    到目前为止,一些简单的使用应该比较清楚了,至于客户端调用时如何做到最大的平衡和稳定,还在研究,研究出来了再做记录吧。

  • 相关阅读:
    npm镜像切换
    vue组件样式覆盖问题-module
    实现微信小程序多文件同时上传,并且携带参数
    提交现有代码到gitee
    富文本框 字段存入数据库
    js动态添加 <select>标签disable属性
    validate验证,rules属性名为特殊属性名
    springboot themleaf ajax总结
    th:field,th:value
    直接在页面上显示当前年份
  • 原文地址:https://www.cnblogs.com/EddyPeng/p/2606571.html
Copyright © 2011-2022 走看看