Memched还是比较简单的,这里把C#的相关操作整理了一下,Mark~

     /// <summary>
     /// 缓存操作类。
     /// </summary>
     /// <remarks>
     /// 简介:
     ///     Memcached是一个开源的高性能分布式缓存系统,基于key-value的形式存储,简洁强大,开发速度快。
     ///     安装教程:http://www.runoob.com/memcached/memcached-install.html
     ///     使用类似:/usr/bin/memcached -p 11211 -u root -d 启动
     /// 存储命令:
     ///     Memcached真的很简单,set、add、replace、append、prepend、cas命令的参数也基本相同,这里就一一缀诉,以set为例,
     /// set key flags exptime bytes [noreply]
     /// value
     ///     key:键值对key-value中的key;
     ///     flags:存储键值对的额外信息;
     ///     exptime:过期时间以秒为单位,0表示永远
     ///     bytes:在缓存中存储的字节数
     ///     noreply(可选):告知服务器不需要返回数据
     ///     value:存储的值(始终位于第二行)
     ///  其他命令:
     ///     get key:查找命令,多值的查找请使用get key1 key2 key3
     ///     delete key:删除命令
     ///     stats:返回统计信息
     ///     flush all:用于清理缓存中的所有的key
     /// </remarks>
     public class MemcachedCore
     {
         public MemcachedClient _mClient;

         /// <summary>
         /// 初始化。
         /// </summary>
         /// <param name="connStr">链接字符串例:127.0.0.1:11211</param>
         /// <param name="poolName"></param>
         public MemcachedCore(string connStr, string poolName = "")
         {
             _mClient = new MemcachedClient();
             _mClient.PoolName = poolName;
             _mClient.EnableCompression = false;

             //初始化
             SockIOPool pool; //memcache的pool可以关联多个server,虽然Memcached是分布式的,但是本身是不支持的,需要在客户端编写分布式策略,通过weight来实现
             if (string.IsNullOrEmpty(poolName))
                 pool = SockIOPool.GetInstance();
             else
                 pool = SockIOPool.GetInstance(_mClient.PoolName);
             pool.SetServers(new string[] { connStr });
             pool.Nagle = false;
             pool.Initialize();
         }

         public void Set<T>(string key, T obj)
         {
             _mClient.Set(key, obj);
         }

         public void Set<T>(string key, T obj, DateTime expireTime)
         {
             _mClient.Set(key, obj, expireTime);
         }

         public void Add<T>(string key, T obj)
         {
             _mClient.Add(key, obj);
         }

         public void Add<T>(string key, T obj, DateTime expireTime)
         {
             _mClient.Add(key, obj, expireTime);
         }

         public void Update<T>(string key, T obj)
         {
             _mClient.Replace(key, obj);
         }

         public void Update<T>(string key, T obj, DateTime expireTime)
         {
             _mClient.Replace(key, obj, expireTime);
         }

         public void Delete(string key)
         {
             _mClient.Delete(key);
         }

         public T Get<T>(string key)
         {
             return (T)_mClient.Get(key);
         }

         public List<T> GetList<T>(string[] keys)
         {
             return _mClient.GetMultipleArray(keys).Select(p => (T)p).ToList();
         }
     }

Memched——C#操作的更多相关文章

  1. 关于DOM的操作以及性能优化问题-重绘重排

     写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...

  2. Sql Server系列:分区表操作

    1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...

  3. C# ini文件操作【源码下载】

    介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...

  4. js学习笔记:操作iframe

    iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...

  5. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

  6. ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)

    前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...

  7. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  8. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

  9. 【翻译】MongoDB指南/CRUD操作(三)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...

随机推荐

  1. HTML与CCS(十一)

    1.1 HTML介绍 1.1.1 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) s ...

  2. 洛谷P4413 [COCI2006-2007#2] R2(可持久化平衡树维护NTT)

    题意翻译 设S=(R1+R2)/2,给定R1与S (-1000<=R1,S<=1000)(−1000<=R1,S<=1000) ,求R2. 感谢@Xeonacid 提供的翻译 ...

  3. Arduino UNO R3

    Arduino 常见型号 当然还有 LilyPad,附图: 最常见的自然是UNO,最新版是第三版R3: 国内也有一些改进的板子.我用的是一般的板子,拿到货也只能默默了. 简介 The Uno is a ...

  4. 腾讯云TrustAsia DV SSL CA证书的申请及使用

    1.证书申请及管理     对于已经拥有域名及公网服务器的用户,可以通过腾讯云申请TrustAsia DV SSL CA证书,证书申请流程包含填写基本信息和域名认证两步,非常清晰和简单,没有什么需要过 ...

  5. UWP添加数字证书导出安装包本地安装

    先生成一个简单的HelloWorld应用程序 <Page x:Class="HelloWorld.MainPage" xmlns="http://schemas.m ...

  6. vim利器:vundle 管理器和NERDTree插件

    vundle 和nerdtree vundle git: https://github.com/VundleVim/Vundle.vim.git nerdtree git : https://gith ...

  7. Project Euler 8 Largest product in a series

    题意:寻找这 1000 个数中相邻 13 个数相乘积最大的值 思路:首先想到的是暴力,但是还可以利用之前记录过的数值,什么意思呢?即在计算 2 - 14 后,再计算 3 - 15 时完全可以利用之前计 ...

  8. 训练1-S

    给出N个正整数,检测每个数是否为质数.如果是,输出"Yes",否则输出"No". Input 第1行:一个数N,表示正整数的数量.(1 <= N < ...

  9. Problem 8

    Problem 8 # Problem_8.py """ The four adjacent digits in the 1000-digit number that h ...

  10. 00068_Date类

    1.类Date表示特定的瞬间,精确到毫秒: 2.查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象: //创建日期对象,把当前的毫 ...