zoukankan      html  css  js  c++  java
  • Memcached (第一篇)

      Memcached是“分布式”的内存对象缓存系统,那么不需要“分布”的、不需要共享的或者干脆规模小到只有一台服务器的应用,Memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源,如果只是本地级缓存,使用Memcached是非常不划算的。

      Memcached在很多时候都是作为数据库前端Cache使用的。因为它比数据库少了很多SQL解析、磁盘操作等开销,而且它是使用内存来管理数据的,所以它可以提供比直接读取数据库更好的性能。在大型系统中,访问同样的数据是很频繁的,Memcached可以大大降低数据库压力,使系统执行效率提升。另外,Memcached也经常作为服务器之间数据共享的存储媒介。

      Memcached使用内存管理数据,所以它是易失的,当服务器重启或者Memcached进程终止,数据便会丢失,所以Memcached不能用来持久保存数据。很多人错误地理解,认为Memcached的性能非常好,好到了内存和硬盘的对比程度,其实Memcached使用的内存并不会得到成百上千的读写速度提高,它的实际瓶颈在于网络连接。它和使用磁盘的数据库系统相比,好处在于它本身非常“轻”,因为没有过多的开销和直接的读写方式,它可以轻松应付非常大的数据交换量,所以经常会出现两条千兆带宽都满负荷了,Memcached进程本身并不占用多少CPU资源的情况。

      从使用的角度来说,Memcached针对Asp.net的API就像和内置的API一样。开发人员很容易使用Memcached,仅仅通过在代码中查找和替换即可实现。

    一、Memcached安装

      1、下载windows版memcached

      2、打开DOS,进入memcached.exe所在目录

    • 进入某个硬盘的命令 X:+回车 (X代表硬盘的盘符)
    • 进入某个文件夹的命令 cd+空格+文件名子
    • 退出当前文件夹的命令 cd..(就是cd后面加上两个点号再回车即可)

      3、输入命令:memcached.exe -d install

      memcached -d install -l 127.0.0.1 -m 1024 -c 2048

      参数说明

    • -d install 安装为Windows服务,默认端口11211
    • -l 绑定的IP
    • -m 能够使用的最多内存(MB),默认64MB。
    • -c 最发并发连接数,默认1024。

      4、 守护进程方式启动:memcached.exe -m 32 -d start

      5、 指定端口启动:memcached.exe –p 33000 -m 32

      可以启动多个服务,命令行窗口关闭则服务停止。

    二、启动服务,安装完成

      测试Memcached的步骤如下:

      1).使用telnet指定访问localhost的11211端口,11211为Memcached的默认监听剪口。

      telnet localhost 11211

      2).输入stats,回车执行,检查Memcached服务的状态。

      

      3).quit命令退出。

    三、在Asp.net中访问Memcached

      在Asp.net中访问Memcached的步骤如下:

      1、到Codeplex中下载Memcached Provider:http://memcachedproviders.codeplex.com/

      2、在网站项目中引用Enyim.Caching.dll,MemcachedProviders.dll以及Log4net.dll。

      3、在配置文件中“注册自定义缓存提供器”,代码如下:

    <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" />

      4、分别配置三个Section.

      首先是enyim.com的配置信息:

      <enyim.com>
        <memcached>
          <servers>
            <!-- 自己的服务器IP放这里 -->
            <add address="127.0.0.1" port="11211" />
          </servers>
          <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
        </memcached>
      </enyim.com>

      然后是cacheProvider的配置信息:

      <cacheProvider defaultProvider="MemcachedCacheProvider">
        <providers>
          <add name="MemcachedCacheProvider" type="MemcachedProviders.Cache.MemcachedCacheProvider,MemcachedProviders" keySuffix="_MySuffix_" defaultExpireTime="2000" />
        </providers>
      </cacheProvider>

      最后是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>
        <!-- <threshold value="OFF"> -->
        <!-- 根据根目录信息,添加输出程序与设置默认优先级 -->
        <root>
          <priority value="WARN"/>
          <appender-ref ref="ConsoleAppender">
            <filter type="log4net.Filter.LevelRangeFilter">
              <levelMin value="WARN"/>
              <levelMax value="FATAL"/>
            </filter>
          </appender-ref>
        </root>
      </log4net>

    四、操作Memcached

      对Memcached的基本操作步骤如下:

      1.引用MemcachedProviders的命名空间

      using MemcachedProviders.Cache;

      2.在Memcached中保存信息

      DistCache.Add(stringKey,objValue);

      3.从Memcached中读取信息。

      DistCache.Get(strKey);

      4.删除信息

      DistCache.Remove(cacheKey);

      5.清除所有信息

      DistCache.RemoveAll();

      不知道是不是Memcached版本的问题,导致Add。无法成功,看来还是要了解一下套接字编程,自己搞了。

  • 相关阅读:
    mybatis动态查询,模糊查询
    Python 列表
    异步加载实现点赞功能($.load 出现post不支持)
    shiro多账号登录(用户名,手机号,邮箱)
    spring data jpa 级联操作的时候注意事项
    semantic UI 点击按钮自动提交表单原因
    上线日期
    有关弱类型意识、DOM、动态语言与函数式编程
    视频项目时长的存储和程序设计方案---单例模式节省内存空间以及自定义注解
    项目中整合第三方插件与SpringMVC数据格式化关于ip地址
  • 原文地址:https://www.cnblogs.com/kissdodog/p/3549488.html
Copyright © 2011-2022 走看看