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. javascript实现选项卡切换的4种方法

    方法一:for循环+if判断当前点击与自定义数组是否匹配 <html lang="en"> <head> <meta charset="UT ...

  2. ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBA

    在MySQL 5.7版本中,备份迁移数据库的时候,还原时提示如下报错信息 ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be ...

  3. OpenCV的Python接口

    Python教程系列:http://blog.csdn.net/sunny2038/article/details/9057415 与C++的不同之处:http://developer.51cto.c ...

  4. HOG行人检测 如何制作样品

    原文链接:http://blog.csdn.net/Armily/article/details/8333836 如何制作训练样本 分析了原作者的数据集,结合网上一些资料,下面描述如何制作训练样本 1 ...

  5. Embeding如何理解?

    参考: http://www.sohu.com/a/206922947_390227 https://zhuanlan.zhihu.com/p/27830489 https://www.jianshu ...

  6. Apex语言(二)变量与常量

    1.变量 凡是交给计算运算(处理)的数据就是变量,用来保存参加运算的数据和计算结果. 变量由变量名来标识. 变量名由字母数字和下划线组成,不能以数字开头. [正确]number,number1,num ...

  7. 洛谷P1120 小木棍 [数据加强版]搜索

    玄学剪支,正好复习一下搜索 感觉搜索题的套路就是先把整体框架打出来,然后再一步一步优化剪枝 1.从maxv到sumv/2枚举长度(想一想,为什么) 2. 开一个桶,从大到小开始枚举 3. 在搜索中,枚 ...

  8. keepalived+mysql主主实现高可用

    mysql主从配置参考我的上篇博客 主主配置就是互为主从 环境 准备应用 keepalived-2.0.2.tar.gz openssl-devel-1.0.2k-12.el7.x86_64.rpm ...

  9. sublime 自定义快捷生成代码块

    菜单栏目选 Tools(工具) =>Developer(插件开发)=>New Snippet....(新建代码片段),如图: 接着会新开一个标签页,会附带一些内容:如图: 将“Hello, ...

  10. Project Euler 16 Power digit sum( 大数乘法 )

    题意: 215 = 32768,而32768的各位数字之和是 3 + 2 + 7 + 6 + 8 = 26. 21000的各位数字之和是多少? 思路:大数乘法,计算 210 × 100 可加速计算,每 ...