池的概念

SockIOPool

首先来看下属性

    1. SockIOPool属性 
      boolean initialized = false – 初始化是否完成的标志,只有初始化完成后上层才能正常使用池 
      int initConn = 10 – 初始化时对每个服务器建立的连接数目 
      int minConn = 5 – 每个服务器建立最小的连接数,当自查线程发现与某个服务器建立连接数目小于这个数目时 
      会弥补剩下的连接 
      int maxConn = 100 -每个服务器建立最大的连接数,当自查线程发现与某个服务器建立连接数目大于这个数目 
      时就会逐个检查这些连接的空闲时间是否大于maxConn,如果大于会关闭这些连接,直到连接数等于maxConn 
      long maxIdle = 1000 * 60 * 5 – 最大空闲时间 
      long maxBusyTime = 1000 * 30 – 最长租用时间,其使用主要有两点,一是自查线程会检查正在被租用的连接, 
      如果发现已经被租用的时间超过这个值得,会将其从被租用的记录里剔除,并关闭这个连接;另一个应用是 
      上层进行MUTIL操作时,读取所有的数据的时间不能超过这个时间。 
      long maintSleep = 1000 * 30 – 自查线程周期进行工作,其每次休眠时间 
      int socketTO = 1000 * 3 – Socket阻塞读取数据的超时时间 
      int socketConnectTO = 1000 * 3 - Socket阻塞建立连接的等待时间 
      boolean aliveCheck = false -根据key&hashCode获取SockIO时,通过hash bucket得到SockIO后,如果这个值 
      是true会检查Socket是否已经连接,如果连接建立正常还会想服务器发送“version\r\n”的指令,并读取数据,这 
      个过程没有出错才会返回SockIO给上层用,否则返回NULL。所以一般设置为false。 
      boolean nagle = false – Socket的参数,如果是true在写数据时不缓冲,立即发送出去 
      int hashingAlg = NATIVE_HASH – 池的hash bucket方式,主要是分为简单的hashCode取hash bucket数目的模 
      和一致性哈希,前者在扩容时会造成命中率很大程度的下降,后者的好处是扩容时很大程度减少了缓存的重新 
      分布 
      String[] servers – memcached服务器地址配置 
      Integer[] weights – memcached服务器权重配置 
      List buckets - hash bucket,一个服务器地址,其权重是N,则往这个bucket中添加N个服务器地址 
      TreeMap
    2. 其次就是在自己的本地安装一个 memcached
    3. 建立  MemcacheHelper.cs类

      public class MemcacheHelper
      {
      private readonly static MemcachedClient mc = null;
      static MemcacheHelper()
      {
      string[] serverlist = { "填写装了服务IP地址1", "10.0.0.132:11211" };//有几个写几个

      //初始化池
      SockIOPool pool = SockIOPool.GetInstance();
      pool.SetServers(serverlist);

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

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

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

      pool.Nagle = false;
      pool.Initialize();

      // 获得客户端实例
      mc = new MemcachedClient();
      mc.EnableCompression = false;
      }
      /// <summary>
      /// 向Memcache中添加数据
      /// </summary>
      /// <param name="key"></param>
      /// <param name="value"></param>
      public static bool Set(string key, object value)
      {
      return mc.Set(key, value);
      }
      public static bool Set(string key, object value,DateTime time)
      {
      return mc.Set(key, value,time);
      }
      /// <summary>
      /// 获取数据
      /// </summary>
      /// <param name="key"></param>
      /// <returns></returns>
      public static object Get(string key)
      {
      return mc.Get(key);
      }
      /// <summary>
      /// 删除
      /// </summary>
      /// <param name="key"></param>
      public static bool Delete(string key)
      {
      if (mc.KeyExists(key))
      {
      return mc.Delete(key);
      }
      return false;
      }
      }

    4. 现在就可以调用这个方法了。主要就是一个池的概念。 
      1. string sessionId = Guid.NewGuid().ToString();//必须保证Memcache的key唯一
        Common.MemcacheHelper.Set(sessionId,数据, DateTime.Now.AddMinutes(20));//向Memcache中添加登录用户数据.
        Response.Cookies["sessionId"].Value = sessionId;//将自创的SessionId以Cookie的形式返回给浏览器。

memcached 的 SockIOPool 概念的更多相关文章

  1. 一,memcached的基本概念

    1,memcached的基本概念 memcached是一个高效的分布式内存对象缓存系统,它可以支持把各种php的数据(array,对象,基本数据类型)放入到它管理的内存中.简单的说,memcached ...

  2. Memcached Memcached.ClientLibrary.SockIOPool”的类型初始值设定项引发异常

    又一次遭遇"xxx类型初始值设定项引发异常" 下了个c#实现的轻量级IoC开源项目,可是在本地使用时发现一运行就捕捉到"类型初始值设定项引发异常"的异常信息,调 ...

  3. memcached缓存基本概念

    Memcached是一套分布式内存对象缓存系统. 用于在动态应用系统中缓存数据库的数据,减少数据库的访问压力,达到提升网站系统性能的目的:memcached在企业应用场景中一般是用来作为数据库的cac ...

  4. Python自动化 【第十一篇】:Python进阶-RabbitMQ队列/Memcached/Redis

     本节内容: RabbitMQ队列 Memcached Redis 1.  RabbitMQ 安装 http://www.rabbitmq.com/install-standalone-mac.htm ...

  5. Memcached报错

    1. ERROR Memcached.ClientLibrary.SockIOPool [(.6271ms 解决办法:据说是因为定期清理应用池的原因.

  6. java + memcached安装

    一:安装 (临时获取上手windows实验) 1.下载memcached.exe , 上F:\memcached\ 下 2.在CMD在输入 "F:\memcached\memcached.e ...

  7. Java操作Memcached

    本文复制其他播客,有好的技术文章希望各位大神能告知... 谢谢. 如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; import j ...

  8. memcached—Java操作Memcached实例

    前面博客介绍了如何在Windows操作系统中安装Memcached,总结一下如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; imp ...

  9. 华丽的NHibernate

    华丽的NHibernate http://www.cnblogs.com/kissdodog/archive/2013/02/21/2919886.html 华丽的NHibernate NHibern ...

随机推荐

  1. Fiddler工具详细介绍

    百度看到Fiddler工具的详细介绍,转载收藏,侵权删,原文地址:http://blog.csdn.net/qq_21445563/article/details/51017605 前部分讲解Fidd ...

  2. python kmeans实战 - 单机一层聚类(小玩具哦),下次再弄个分布式多次聚类

    # coding=utf-8     """   #K-means   """          import time           ...

  3. 【转】linux下杀死进程(kill)的N种方法

    转载一篇,最原始的出处已不可考,望见谅! 常规篇: 首先,用ps查看进程,方法如下: $ ps -ef ……smx       1822     1  0 11:38 ?        00:00:4 ...

  4. jetbrains golang IDE

    非常好的IDE,叫goland. 支持最新的golang1.8了 下载地址: https://www.jetbrains.com/go/ 开始使用手册: https://www.jetbrains.c ...

  5. PL/SQL程序设计

    1 PL/SQL简介 1 什么是PL/SQL? PL/SQL是 Procedure Language & Structured Query Language 的缩写.PL/SQL是对SQL语言 ...

  6. PHP在使用正则表达式验证,防注入的时候要注意一下的细节

    如下:这是一个防止用户输入的数据中包含SQL的一些关键字的正则表达式 之前一直认为这写的很正确,没多大的问题,而且自己测试也没问题, 因为关键字包含 And,而如果用户输入andy的时候呢,汗,所以还 ...

  7. node.js获取url中的各个参数

    实例代码test.js var http=require('http'); var url=require('url'); var querystring=require('querystring') ...

  8. 一个在linux环境执行io操作的bug

    今天项目有了一个奇葩的要求...是什么呢 后台上传了视频后,解析其中的时长,和预览图,并拼接在一起,然而,之东西并不是太麻烦,很快写好了,在本地测试后也没有问题,嗯,发布到测试环境后,一个jar包报错 ...

  9. 一个实用的却被忽略的命名空间:Microsoft.VisualBasic

    当你看到这个命名空间的时候,别因为是VB的东西就匆忙关掉网页,那将会是您的损失,此命名空间中的资源最初目的是为了简化VB.NET开发而创建的,所以Microsoft.VisualBasic并不属于Sy ...

  10. Linux系统修改Mysql密码

    一.拥有原来的myql的root的密码: 方法一: 在mysql系统外,使用mysqladmin mysqladmin -u root -p password "test123" ...