设为首页 收藏本站
查看: 1453|回复: 0

[经验分享] 【转载】Memcached Tip 2:Session同步

[复制链接]

尚未签到

发表于 2015-9-1 13:38:02 | 显示全部楼层 |阅读模式
  http://www.cnblogs.com/luminji/archive/2011/08/17/2143371.html
  
  http://memcachedproviders.codeplex.com/提供的Memcached客户端支持Asp.net站点中的Session同步,其原理是接管Asp.net的Session处理,同时在后台使用数据库支持完成WEB集群的Session的同步。具体实现步骤如下:
  1:数据库准备
  下载完毕Memcached providers之后,在解压目录下有:
DSC0000.png
  一个用于创建数据库表,一个用于创建这个provider的需要用到的存储过程。
  2:配置sessionState
  sessionState的配置如下,为了完整性期间,这里给出Web.config的全部配置部分,包括分布式缓存的Memcached的配置:



view sourceprint?

<?xml version="1.0"?>

<!--

  For more information on how to configure your ASP.NET application, please visit

  http://go.microsoft.com/fwlink/?LinkId=169433

  -->

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

  </configSections>

  <log4net>

    <!-- Define some output appenders -->

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

    <!-- Setup the root category, add the appenders and set the default priority -->

    <root>

      <priority value="WARN"/>

      <appender-ref ref="ConsoleAppender">

        <filter type="log4net.Filter.LevelRangeFilter">

          <levelMin value="WARN"/>

          <levelMax value="FATAL"/>

        </filter>

      </appender-ref>

    </root>

  </log4net>

  <enyim.com>

    <memcached>

      <servers>

        <!-- put your own server(s) here-->

        <add address="192.168.0.96" port="11211" />

        <!--<add address="192.168.0.101" port="11211" />-->

      </servers>

      <socketPool minPoolSize="10" maxPoolSize="100"

                  connectionTimeout="00:00:10" deadTimeout="00:02:00" />

    </memcached>

  </enyim.com>

  <cacheProvider defaultProvider="MemcachedCacheProvider">

    <providers>

      <add name="MemcachedCacheProvider"

                 type="MemcachedProviders.Cache.MemcachedCacheProvider, MemcachedProviders"

                 keySuffix="_MySuffix_" defaultExpireTime="2000"/>

    </providers>

  </cacheProvider>

   

  <connectionStrings>

    <add name="ApplicationServices"

         connectionString="Data Source=192.168.0.96;Initial Catalog=ForestFire;User Id=sa;Password=sa;"

         providerName="System.Data.SqlClient" />

  </connectionStrings>

   

  <system.web>

      

    <sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom"

customProvider="MemcachedSessionProvider">

      <providers>

        <add name="MemcachedSessionProvider" type="MemcachedProviders.Session.SessionStateProvider,MemcachedProviders" connectionStringName="ApplicationServices" dbType="SQL" writeExceptionsToEventLog="false"   />

      </providers>

    </sessionState>

      

    <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>
  3:代码
  代码没有任何稀奇的,和传统的Session操作一样,如下:



view sourceprint?

protected void Page_Load(object sender, EventArgs e)

{

    try

    {

        Session["name"] = "豆腐";

    }

    catch (Exception err)

    {

        Response.Write(err.Message);

    }

}


protected void Button1_Click(object sender, EventArgs e)

{

    Label1.Text = Session["name"].ToString();

}
  全部代码下载如下:WebApplication20110817.rar
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-108398-1-1.html 上篇帖子: .NET平台上的Memcached客户端介绍 下篇帖子: (转) 分布式缓存系统Memcached简介与实践
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表