网站架构之缓存应用

      这篇来讲如何利用memcached实现一级缓存,以及如何让一级缓存组件支持在企业库,memcached或者其它第三方实施方案之间的切换。memcached本人并没有太多经验,如果文中有说的不对的地方,还希望批评指出,且文中关于memcached的代码大多来自网络
     创建memcached实现类MemcachedWebCacheProvider,由它来继承缓存提供者接口IWebCacheProvider,主里memcached客户端我采用.NET memcached client library ,这个类库很久没有更新这过了,没有和Java版同步,有部分功能目前没有实现。
     1:初始化memcached服务,这段初始化代码在程序中保证执行一次就够,一般可以放在gloabl文件中,或者是设置一个静态变量来存储服务的状态。

 private void Setup()
        {
            String[] serverlist 
= { "127.0.0.1:11211" };
            
this._pool = SockIOPool.GetInstance("default");
            
this._pool.SetServers(serverlist); //设置服务器
            
//服务器之间负载均衡的设置
            this._pool.SetWeights(new int[] { 1 });
            
//socket pool设置
            this._pool.InitConnections = 5//初始化时创建的连接数
            this._pool.MinConnections = 5//最小连接数
            this._pool.MaxConnections = 250//最大连接数
            
//连接的最大空闲时间,下面设置为6个小时(单位ms),超过这个设置时间,连接会被释放掉
            this._pool.MaxIdle = 1000 * 60 * 60 * 6;
            
//通讯的超时时间,下面设置为3秒(单位ms),.NET版本没有实现
            this._pool.SocketTimeout = 1000 * 3;
            
//socket连接的超时时间,下面设置表示连接不超时,即一直保持连接状态
            this._pool.SocketConnectTimeout = 0;
            
this._pool.Nagle = false//是否对TCP/IP通讯使用Nalgle算法,.NET版本没有实现
            
//维护线程的间隔激活时间,下面设置为60秒(单位s),设置为0表示不启用维护线程
            this._pool.MaintenanceSleep = 60;
            
//socket单次任务的最大时间,超过这个时间socket会被强行中断掉(当前任务失败)
            this._pool.MaxBusy = 1000 * 10;
            
this._pool.Initialize();
        }

it知识库网站架构之缓存应用,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。