Asp.Net Memcached安装配置使用、安全性

Memcached安装配置使用

 一,准备
        你需要有一下软件:
       VS.NET(05/08)
       SQLSERVER
       memcached服务器端以及客户端类库(开源软件,下载即可)
其中,客户端类库包括以下几个DLL:
       Memcached.ClientLibrary.dll
       ICSharpCode.SharpZipLib.dll

二,Windows下的Memcache安装:
1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached
2. 在终端(也即cmd命令界面管理员身份安装,首先找出cmd.exe的原文件(在c:\windows\system32\cmd.exe),
右击以管理员进入,接下来的步骤就和xp安装方法一样了)下输入 ‘c:\memcached\memcached.exe -d install’ 安装
3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
4.监控
e:\memcached\memcached.exe -p 11121 -m 64 -vv

三,建立ASP.NET工程
     创建一个ASP.NETWEB项目,命名为MMCWEB,添加以上提到的几个客户端类库的引用。
四,配置
     memcached使用了log4net,所以我们先配置log4net
在web.config里找到configSections节点,添加以下内容
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

再在configSections节点之外,增加以下内容:
<log4net>
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
            <param name="File" value="LogFiles/"/>
            <param name="AppendToFile" value="true"/>
            <param name="MaxSizeRollBackups" value="10"/>
            <param name="StaticLogFileName" value="false"/>
            <param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;"/>
            <param name="RollingStyle" value="Date"/>
            <layout type="log4net.Layout.PatternLayout">
                <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger %ndc - %message%newline"/>
            </layout>
        </appender>
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
            <layout type="log4net.Layout.PatternLayout">
                <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger %ndc - %message%newline" />
            </layout>
        </appender>
        <root>
            <level value="ALL" />
            <appender-ref ref="RollingLogFileAppender" />
            <appender-ref ref="ConsoleAppender" />
        </root>
        <logger name="Memcached.ClientLibrary">
            <level value="WARN" />

</logger>
    </log4net>
启动调试,若没出现配置的出错提示,并且在网站目录下有文件夹LogFiles,就说明log4net配置成功了。

五,初始化SockIOPool
SockIOPool是什么东东?SockIOPool是Memcached客户端提供的一个套接字连接池,通俗讲,就是与Memcached服务器端交换数据的对象。SockIOPool在应用程序启动时初始化一次就可以了,我把这个工作放在 GLOBAL.ASAX.CS的Application_Start方法里
char[] separator = { ‘,‘ };
            string[] serverlist = ConfigurationManager.AppSettings["Memcached.ServerList"].Split(separator);

// initialize the pool for memcache servers
            try
            {
                SockIOPool pool = SockIOPool.GetInstance();
                pool.SetServers(serverlist);

pool.InitConnections = 3;
                pool.MinConnections = 3;
                pool.MaxConnections = 50;

pool.SocketConnectTimeout = 1000;
                pool.SocketTimeout = 3000;

pool.MaintenanceSleep = 30;
                pool.Failover = true;

pool.Nagle = false;
                pool.Initialize();
            }
            catch (Exception err)
            {
                //这里就可以用Log4Net记录Error啦!
            }

注意AppSettings["Memcached.ServerList"]是在WEB.CONFIG里设置的,所以WEB.CONFIG的appSettings的子节点里需要有以下一行
<add key="Memcached.ServerList" value="127.0.0.1:11211"/>
启动调试服务器,若没有出错的日志记录,说明IO连接池已经开辟成功。

配置信息:

  1. <?xml version="1.0"?>  
    
    <!--
      有关如何配置 ASP.NET 应用程序的详细信息,请访问
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->  
    
    <configuration>  
    
      <!--Enyim.Caching配置(省略了Log4Net框架)   For Memcached-->  
    
      <!--<configSections>
        <sectionGroup name="enyim.com">
          <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
        </sectionGroup>
      </configSections>
      <enyim.com protocol="Binary">
        <memcached>
          <servers>
            <add address="127.0.0.1" port="11121"  />
          </servers>
          <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
        </memcached>
      </enyim.com>-->  
    
      <!--The Enyim.Caching配置 End -->  
    
      <!--MemcachedProviders的配置  -->
      <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"/>
      </configSections>
      <cacheProvider defaultProvider="MemcachedCacheProvider">
        <providers>
          <add name="MemcachedCacheProvider"
         type="MemcachedProviders.Cache.MemcachedCacheProvider, MemcachedProviders"  keySuffix="_MySuffix_" defaultExpireTime="2000"/>
        </providers>
      </cacheProvider>
      <enyim.com>
        <memcached>
          <servers>
            <!-- put your own server(s) here-->
            <add address="127.0.0.1" port="11121" />
          </servers>
          <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
        </memcached>
      </enyim.com>  
    
      <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>  
    
      <!--The MemcachedProviders配置 End-->  
    
      <connectionStrings>
        <add name="ApplicationServices"
             connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
             providerName="System.Data.SqlClient" />
      </connectionStrings>  
    
      <system.web>
        <compilation debug="true" targetFramework="4.0" />  
    
        <authentication mode="Forms">
          <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
        </authentication>  
    
        <membership>
          <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
                 enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
                 maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
                 applicationName="/" />
          </providers>
        </membership>  
    
        <profile>
          <providers>
            <clear/>
            <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
          </providers>
        </profile>  
    
        <roleManager enabled="false">
          <providers>
            <clear/>
            <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
            <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
          </providers>
        </roleManager>  
    
      </system.web>  
    
      <system.webServer>
         <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
    </configuration>  

六,使用Memcached
       终于进入正题了,不过使用之前,我们还需要准备一些数据。
      创建一个实体类People,并加上Serializable属性!!!
      对应的数据库里,增加一张表,字段对应实体类,插入一些测试数据。持久层和业务层的设计就略过了,他们负责向提供一些数据,返回类型可自定,若ILIST,DATASET。
     Memcached使用起来就很简单了,比如后台检索出一组People类型的数据,放在一个叫peopleList的arraylist里,而且这个arraylist要频繁使用,只需要这样
MemcachedClient mc = new MemcachedClient();
mc.EnableCompression = true;
mc.Set(key, peopleList);     
         上面的key是用来访问这个arraylist的键,Memcached里的数据都是保存为键-值对的。
一旦mc.KeyExists(key)为TRUE,就用return mc.Get(key) as ArrayList提取数据,删除时,使用 return mc.Delete(key);等等。可以自己琢磨了。

以上只是演示,其实数据缓存是一项复杂而繁琐的工作,不仅需要后台代码的分层优化,也需要数据库对大数据量访问的策略和调优。

Memcached 的安全性

如果你了解了 Memcached 的工作流程, 你可能已经注意到了,在访问缓存的过程中,没有任何权限控制的相关流程。如果你的数据不是非常重要的,你大可不必担心这方面的安全问题。如果你需要的话,以下几点可以协助你更完全的使用它:

使用唯一的 Key:因为在 Memcached 中的数据是以一个大的数组形式存在的,所以你应该使用唯一的 key。访问你的数据的唯一办法就是通过你保存数据时的 key,除此之外再没有其它可查询的办法。

保证你的 Memcached 器安全: 因为 Memcached 本身并没有身份验证机制,所以对 Memcached 的服务器查询,都应该通过防火墙进行。你可以在防火墙上设定规则,哪些服务器是允许被访问的,哪些是不允许被访问的。

加密你的数据: 你可以将数据和 Key 通过加密的方式保存在 Memcached 中。 这需要花费一些额外的 CPU 时间,但是为了你的数据安全,在情况允许的情况下,这个方法值得你去尝试。

时间: 2024-10-12 01:51:55

Asp.Net Memcached安装配置使用、安全性的相关文章

Memcached 安装配置

#!/bin/bash ip=`/sbin/ifconfig  |grep "Bcast"|awk '{print $2}'|awk -F : '{print $2}'|head -n 1` cd /root/soft/memcached #安装libevent tar zxvf libevent-2.0.12-stable.tar.gz cd libevent-2.0.12-stable ./configure --prefix=/usr/local/libevent make &a

memcached安装配置

简述: memcached,开源的分布式缓存数据系统.高性能的NOSQL . Linux 一.环境配置与安装 01.编译准备环境 yum install -y gcc make cmake autoconf libtool 02.编译memcached #官方下载 wget http://memcached.org/latest #安装源码编译依赖库 yum install -y  libevent-devel #编译安装 site:http://memcached.org/ lastnew:m

ubuntu memcached 安装配置

# 安装服务端sudo apt-get install memcached#启动服务memcached -d -m 128 -p 11111 -u root 下载window下php memcached.dll http://pecl.php.net/package/memcache/3.0.8/windows 接下来配置 PHP 把 php_memcache.dll 拷贝到 PHP 的扩展文件夹, 在 php.ini 文件里添加一行 extension=php_memcache.dll 重启

Windows和Linux环境下Memcached安装与配置(转)

一.memcached安装配置 windows平台安装 1.memcached-1.2.6-win32-bin.zip下载地址: http://code.jellycan.com/memcached/,执行memcached.exe -d install 安装. 2.守护进程方式启动:memcached.exe -m 512 -d start-d为守护进程启动,不能指定端口 默认端口11211-m为指定内存大小 3.指定端口启动:memcached.exe –p 33000 -m 512可以启动

Linux下安装配置Node及memcached

这篇主要是记录Linux下安装Node及memcached遇到的问题及安装配置过程,方便日后查阅 Node安装及配置 [[email protected] ~]tar zxvf node-v0.12.4.tar.gz [[email protected] ~]cd node-v0.12.4 [[email protected] ~]./configure --prefix=/usr/local/node [[email protected] ~]make [[email protected] ~

Linux CentOS 7下Memcached 安装与配置

前言 本篇文章记录一下Linux CentOS 7中关于Memcached的安装与配置. 安装 安装memcached之前首先需要安装libevent,我这里用的版本是: ?libevent-2.0.22 ?memcached-1.4.25 首先将这两个安装文件上传至Linux服务器,在解压安装之前最好先检查一下是否已安装,从libevent开始: rpm -q libevent 发现系统已经安装了一个版本的libevent: 这里写图片描述 既然已经安装了一个版本的libevent,那么我们就

Memcache与Memcached介绍及安装配置

Memcache学习总结1-Memcache与Memcached介绍及安装配置 也许大家一看到Memcache和Memcached会有点晕,这两者有什么关系又有什么区别呢,下面先给大家说下Memcached,Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. 想必大家也听说过Memcached,就是一个缓存系统,我们可以把一些经常要查询的数据放到缓存中,避免每次要使用

LNMP的编译安装与xcache、memcached的安装配置——1

大纲: 一.前言 二.系统环境与软件版本 三.编译环境的准备 四.编译安装nginx及其配置 五.编译安装.配置mysql 六.编译安装PHP 七.整合nginx与PHP 八.安装配置PHP加速器xcache 九.安装配置memcached 十.安装memcached的PHP扩展 一.前言 由于公司的服务器采用的是LNMP的架构,平时接触相对较多,今天会系统的把LNMP的安装配置过程写成博文,有关nginx的其他高级功能的配置,mysql的相关知识,会在后面的时间里陆续写成博客. 二.系统环境与

分布式memcached服务器代理magent安装配置(CentOS6.6)

Memcache服务器安装配置(192.168.1.247~249)首先:配置本地YUM源,挂载光驱,安装编译器 CentOS6.6有两个ISO文件,在虚拟机上安装两个光驱,并连接到两个ISO文件 1.修改yum源配置 cd /etc/yum.repos.d/mv CentOS-Base.repo CentOS-Base.repo.bakvi CentOS-Media.repo 修改替换为如下内容: baseurl=file:///media/cdrom1/        file:///med