EnyimMemcached(64位)使用实例

1.安装:http://www.cnblogs.com/dudu/archive/2009/07/19/1526669.html

2.使用

    using Enyim.Caching.Configuration;
    using Enyim.Caching.Memcached;
    using Enyim.Caching;
    using System.IO;
    public class HomeController : Controller
    {
        public ActionResult Index()
        {

            string setstring = "abcdefg";

            Stopwatch sw = new Stopwatch();
            sw.Start();
            MemcachedClientConfiguration config = new MemcachedClientConfiguration();//创建配置参数
            var obj = new a()
            {
                b = "abcd",
                c = "defg",
            };
            config.Servers.Add(new System.Net.IPEndPoint(IPAddress.Parse("127.0.0.1"), 11211));//增加服务节点
            config.Protocol = MemcachedProtocol.Text;//随便哪个枚举都行
            //config.Authentication.Type = typeof(PlainTextAuthenticator);//设置验证模式
            //config.Authentication.Parameters["userName"] = "memcache";//用户名参数
            //config.Authentication.Parameters["password"] = "password";//密码参数
            using (var mac = new MemcachedClient(config))//创建连接
            {
                //for (int a = 0; a < 300000; a++)
                Parallel.For(0, 300000, a =>
                {
                    //STRING
                    mac.Store(StoreMode.Add, "textbox1" + a.ToString(), setstring);//写入
                    mac.Store(StoreMode.Set, "textbox1" + a.ToString(), setstring);//更新
                    //JSON
                    mac.Store(StoreMode.Add, "aa" + a.ToString(), obj.SerializeObject());
                    //字节数组
                    var bytes = SerializeBinary(obj);
                    mac.Store(StoreMode.Add, "bytes" + a.ToString(), bytes);

                    //string str = mac.Get<string>("textbox1");//获取信息
                    //string cache = mac.Get<string>("aa");
                    //var cacheObj = cache.DeserializeObject<a>();
                    //var cachebytes = DeserializeBinary(mac.Get("bytes") as byte[]) as a;

                });
            }
            sw.Stop();
            return Content(sw.ElapsedMilliseconds.ToString());
            //return Content(cachebytes.b + "<br />" + cachebytes.c);
            //return Content(cacheObj.b + "<br />" + cacheObj.c);
        }

        ///   <summary>
        ///   序列化为二进制字节数组
        ///   </summary>
        ///   <param   name="request">要序列化的对象</param>
        ///   <returns>字节数组</returns>
        public static byte[] SerializeBinary(object request)
        {
            var serializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            using (MemoryStream memStream = new System.IO.MemoryStream())
            {
                serializer.Serialize(memStream, request);
                return memStream.GetBuffer();
            }
        }

        ///   <summary>
        ///   从二进制数组反序列化得到对象
        ///   </summary>
        ///   <param   name="buf">字节数组</param>
        ///   <returns>得到的对象</returns>
        public static object DeserializeBinary(byte[] buf)
        {
            using (MemoryStream memStream = new MemoryStream(buf))
            {
                memStream.Position = 0;
                var deserializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                object newobj = deserializer.Deserialize(memStream);
                memStream.Close();
                return newobj;
            }
        }
    }
    [Serializable]
    public class a
    {
        public string b { get; set; }
        public string c { get; set; }
    }
    using Newtonsoft.Json;
    public static class JsonExtensions
    {
        /// <summary>
        /// 对象转为json字符串
        /// 序列化
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static string SerializeObject(this object o)
        {
            if (o == null)
            {
                return string.Empty;
            }
            return Newtonsoft.Json.JsonConvert.SerializeObject(o);
        }
        public static string SerializeObject(this object o, Newtonsoft.Json.Formatting f)
        {
            if (o == null)
            {
                return string.Empty;
            }
            return Newtonsoft.Json.JsonConvert.SerializeObject(o, f);
        }
        /// <summary>
        /// 字符串解析为对象
        /// 反序列化
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="str"></param>
        /// <returns></returns>
        public static T DeserializeObject<T>(this string str)
        {
            try
            {
                return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(str);
            }
            catch (Exception ex)
            {
                return default(T);
            }
        }

        /// <summary>
        /// 根据key获得json对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="str"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public static T DeserializeObject<T>(this string str, string key)
        {
            try
            {
                var p = Newtonsoft.Json.Linq.JObject.Parse(str);
                return JsonConvert.DeserializeObject<T>(p[key].ToString());
            }
            catch (Exception)
            {
            }
            return default(T);
        }
    }

  主要是看第一个控制器类,后面2个是辅助类和POCO实体,附带了对象序列化和反序列化的方法。示例演示了用EnyimMemcached存储字符串,字节数组,json的方法。个人喜好json这种。

  想偷懒走csdn,3分拿走:http://download.csdn.net/detail/u012398331/8041697

  

时间: 2024-10-12 10:30:26

EnyimMemcached(64位)使用实例的相关文章

Redhat5.8 64位LVS实例环境讲解【一】

   更多内容请访问我的个人网站[迅帮网] 一.服务器环境 1.拓扑图 OS:Redhat 5.8  64位系统 LVS-Master : 192.168.19.60 LVS-Backup : 192.168.19.61 LVS-VIP : 192.168.19.65 Realserver-1 : 192.168.19.62   (Apache) Realserver-2 : 192.168.19.63   (Nginx) Realserver-2 : 192.168.19.64   (IIS)

Redhat5.8 64位LVS实例环境讲解【二】

五. Realserver主机上添加shell脚本 1.192.168.19.62主机 [[email protected]_Apache ~]# touch /usr/local/sbin/real.sh [[email protected]_Apache ~]# vim /usr/local/sbin/real.sh #!/bin/bash VIP=192.168.19.65 . /etc/rc.d/init.d/functions case "$1" in start)     

64位系统使用Access 数据库文件的彻底解决方法

最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是32位版本的,所以在VS里面调试访问Access是没有问题的,但是直接使用编译好的.NET程序访问Access,就出问题了,报: 未在本地计算机上注册“Microsoft.Jet.Oledb.4.0”提供程序. 于是,又在公司的电脑上(Win7 64位)做了实验,发现跟家里面的Win8.1 64位 问题一样,上网搜索了一下,大部分都建议将.NET程序

Oracle 笔记:PLSQL无法连接64位Oracle 解决方法

Plsql打开后提示错误,登录界面无连接目标选择. 原因:PLSQL本身好像就不支持64位的Oracle. 解决方法: 到Oracle 官网下载32位的 Oracle 客户端,地址为 http://www.oracle.com/technetwork/topics/winsoft-085727.html 解压下载的32位客户端即可. PLSQL登录界面暂时取消登录,先进入PLSQL界面,点击首选项,设置OCI库为刚才下载的32位客户端的OCI路径,路径中一定要包含 oci.dll . 添加环境变

oracle 11g R2 标准版 64位linux安装

安装环境: Redhat es 5.5 64位 ,系统内存8G,swap 10G ,oracle 11G R2 标准版 一,Oracle 安装前的准备 检查一下包,必须全部安装: binutils-2.17.50.0.6 compat-libstdc++-33-3.2.3 compat-libstdc++-33-3.2.3 (32 bit) elfutils-libelf-0.125 elfutils-libelf-devel-0.125 gcc-4.1.1 gcc-c++-4.1.1 glib

解决SQL Server 2008 64位系统无法导入Access/Excel的问题 2012/08/01

操作系统Windows Server 2008 X64,数据库SQL Server 2008 X64,Office 2007(好像只有32位),在存储过程执行OpenDatasource导入Access数据的时候遇到问题了,Oledb 4.0已经不被支持,以下是遇到的若干错误提示: 因为 OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询. 无法创建链接服务器 "(null)" 的 OLE DB 访

64位win7安装Oracle11gR2数据库

一.描述 在64位的win7操作系统中安装Oracle11gR2数据库,我们首先需要下载Oracle数据库软件,该地址包含32位和64位的Oracle数据库软件. 百度云盘免费下载地址:http://pan.baidu.com/s/1kTHzodL 二.安装步骤 1.解压以上下载的Oracle安装文件 2.将win64_11gR2_database_2of2\database\stage\Components文件夹下的所有文件拷到win64_11gR2_database_1of2\databas

Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(具体教程)

原文地址:http://blog.csdn.net/sttyytw/article/details/17005263 声明:本教程在參考了下面博文,并经过自己的摸索后实际操作得出,本教程系本人原创,因为升级后的cocos2d-x有了一些变化,眼下的博文还没有关于Cocos2d-x 2.2.1最新版搭建Android交叉编译环境组建的说明,所以我这几天研究了一下,如今将详细的搭建方法分享出来,也给自己学习Cocos2d-x做个笔记. 參考博文: http://www.cnblogs.com/lhm

吐血贡献——centos6.5 64位静默安装oracle 10G R2

操作系统:CentOS release 6.5 (Final) 64位 oracle版本:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit 一.下载必须安装包: # yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc g

win7旗舰版(64位)环境下oracle11g的安装方法(转)

我的环境: 操作系统:windows7旗舰版(64位) 数据库:64位Oracle11g(win64_11gR2) PL/SQL:PL/SQL developer v9.0.1 准备工作: 1.下载Oracle11g( Microsoft Windows (x64)) 下载路径:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 此处下载的是win64_11gR2_database_