C#中缓存数据库Memcached的基本使用方法

在本博客中,只是为大家展示一下Memcached的安装以及基本使用方法,过于深奥的知识点,在本篇文章中不会提到了.

首先把Memcached的下载链接地址分享给大家:  http://download.csdn.net/detail/hao930826/9406266

解压后请根据自己的电脑系统选择不同的版本进行使用,这里面包括了64位和32位的数据库版本。这里我只拿64位的版本进行举例说明了。

安装的方法需要使用控制台进行安装:

这里我把文件都放到了D盘中:


控制台中这样输入即可,完成安装操作:


安装之后,需要开启相关的服务才能正常使用:

接下来输入:


以上步骤完成后,去计算机的服务里面去查看是否开启成功了:

开始->控制面板->管理工具->服务,在里面找到这项:


开启之后,就能正常使用了。

除此之外,扩展一些就说配置Memcached数据库的端口号和最大使用内存等问题:

其实也很简单只要在上面安装步骤,也就是在控制台中输入:  memcached.exe -p 11211 -m 64就是配置了端口号和最大内存,Memcached数据库的默认端口号为11211其实不用改就可以了。

为了验证我们安装的Memcached是否可以正常使用,接下来我们在控制台中继续输入接下来的语句:


因为我是把数据库安装在了本地计算机中,所以这里面的IP地址我只要输入这个就好了,如果说你把数据库安装在了服务器上面的话,这个IP地址就要写服务器的IP地址了,后面的11211就代表了Memcached的端口号,这个也是看实际情况而定的,默认是11211,所以我只要输入11211就好了。输入之后点击回车继续。

之后会来到一个空白页中,在这里我们使用键盘,点击Ctrl+"]",如果看见下面的内容,就代表了你安装的Memcached能够正常使用了


完成之后,我们就开始进行程序的演示了:首先分享个连接给大家,这里面包括了实例程序和相关的dll文件,在下面我们会使用到的:

http://download.csdn.net/detail/hao930826/9406257

1.首先我们要在引用中导入一下的dll文件,这些文件在上面下载后的文件中都有,在这里我们导入:


2.因为我创建的是web程序,很重要的一个步骤就是要写相关的配置文件内容:

控制台应用程序的配置文件内容:
<configuration>
    <configSections>
      <sectionGroup name="enyim.com">
        <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
      </sectionGroup>
      <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
    </configSections>
    <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>
    <memcached keyTransformer="Enyim.Caching.TigerHashTransformer, Enyim.Caching">
      <servers>
        <add address="127.0.0.1" port="11211" />


      </servers>
      <socketPool minPoolSize="2" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
    </memcached>
  </configuration>




Web Application的配置文件内容
<configuration>
  <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"/>
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
          <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
          <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
          <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
          <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
        </sectionGroup>
      </sectionGroup>
    </sectionGroup>
  </configSections>
  <!--MemcachedProviders的配置  -->
  <system.webServer>
    <directoryBrowse enabled="true"/>
      <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="ScriptModule"/>
      <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </modules>
    <handlers>
      <remove name="WebServiceHandlerFactory-Integrated"/>
      <remove name="ScriptHandlerFactory"/>
      <remove name="ScriptHandlerFactoryAppServices"/>
      <remove name="ScriptResource"/>
      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </handlers>
  </system.webServer>
  <cacheProvider defaultProvider="MemcachedCacheProvider">
    <providers>
      <add name="MemcachedCacheProvider" type="MemcachedProviders.Cache.MemcachedCacheProvider, MemcachedProviders" keySuffix="_MySuffix_" defaultExpireTime="2000"/>
    </providers>
  </cacheProvider>
  <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>
  <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">
      <assemblies>
        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      </assemblies>
    </compilation>
    <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>
    <pages>
      <controls>
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </controls>
    </pages>
    <httpHandlers>
      <remove verb="*" path="*.asmx"/>
      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpHandlers>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpModules>
  </system.web>


  <system.codedom>
      <compilers>
        <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
          <providerOption name="CompilerVersion" value="v3.5"/>
          <providerOption name="WarnAsError" value="false"/>
      </compiler>
    </compilers>
  </system.codedom>
  <runtime>
    <assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

这里说明一下,控制台应用程序应新建的是配置文件,就是app.config文件,而不是xml文件;web程序写在web.config里面就好了。

配置文件写好之后,后面的步骤就会变得相当简单容易了,接下来我贴上我的代码作为示例:


这里面我们使用代码client.Store进行相关的数据操作,您将使用五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:
  set
  add
  replace
  get
  delete
  前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令

set命令是赋值语句,如果存在相应的键的话就去替换,没有的话就会新建。add命令是新增语句,但如果存在了相应的键值对的话,就会报错。replace就是替换和set差不多。get命令是取值命令,根据相应的键去取值,delete是删除命令,但是删除了一个不存在的键的话,会报错。

在上面的代码中我使用到了增值语句,最后我设置了这条数据的缓存时间,就是说超过了这个时间的话,这条数据就会被自动删除掉了。

Memcached不仅能保存简单数据类型的值,还能保存对象类型的值:

<span style="background-color: rgb(255, 255, 255);">public void testMemcachedProviders()  
        {  
            string key = "myName";  
            string value = "Dylan";  
            bool result =false;  
            string val=string.Empty;  
            #region 存/取最简单的数据类型  
            //如果缓存中没有,就尝试着去存入缓存  
            if (DistCache.Get(key) == null)  
            {  
                //DistCache.DefaultExpireTime = 1200;//缓存时间  
                result = DistCache.Add(key, value);           //存数据    
                if (result)  
                {  
                    //如果存入成功,就试着去取  
                    Thread.Sleep(500);  
                    string ret = (string)DistCache.Get(key);            //读数据    
                    //Assert.AreEqual(value, ret);                     //验证    
                    if (ret != null)  
                    {  
                        Response.Write(ret);  
                        Response.Write("<br/>");  
                    }  
                    else   
                    {  
                    //取出来的值为null,直接移除该缓存对象  
                        DistCache.Remove(key);//移除  
                       // DistCache.RemoveAll();//移除所有                       
                    }  
                }  
            }  
            else {  
                //缓存中有,直接拿数据  
                string ret = (string)DistCache.Get(key);  
                if (ret != null)  
                {  
                    Response.Write(ret);  
                    Response.Write("<br/>");  
                }  
                else {  
                    DistCache.Remove(key);  
                }  
            }  
            #endregion  
 
            #region  存/取一个Person对象  0
            Person person = new Person() {Id=007,Name="Dylan"};//new 一个Person对象的实例  
           //如果缓存中没有,则尝试着放入缓存  
            if (DistCache.Get<Person>("myObj") == null)  
          {  
              result = DistCache.Add("myObj", person);  
              if (result)  
              {  
                  Thread.Sleep(500);  
                   val  = DistCache.Get("myObj").ToString();  
                  if (val != null) {  
                      Response.Write(val);  
                      Response.Write("<br/>");  
                  }  
                  else {  
                      DistCache.Remove("myObj");  
                  }  
                   
              }  
          }  
          else  
          {  
              //缓存中已经有该对象,就直接从缓存取  
              Person p = DistCache.Get<Person>("myObj");  
              val = person.ToString();  
                //也可以直接这样取  
             // val = DistCache.Get("myObj").ToString();  
               
              if (val != null)  
              {  
                  Response.Write(val);  
                  Response.Write("<br/>");   
              }  
              else  
              {  
                  DistCache.Remove("myObj");  
              }  
  
          }  
            #endregion  
        }    </span>

上面这段程序就是如何保存对象类型的数据保存在数据库中了。

简单的演示步骤就是这些了,希望能够帮助到大家


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值