高性能缓存系统(Memcached)的实例介绍

memcached中实体类型未经序列化不能在memcached中缓存,因此需要对实体类进行处理,才能缓存下来.

Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

我们可以使用Memcached缓存string类型等已经内部实现了序列化的类型,但是对于我们自定义的类型,我们并不能在Memcached中缓存下来,因为Memcached只能缓存序列化之后的数据,因此,在这里我们将自定义的实体类型序列化一下就可以在Memcached中存储了。

首先下载windows平台下的memcached,然后安装。安装完之后就是启动memcached服务了,你可以在cmd下用dos命令输入,也可以在计算机管理->服务->memcached->启动.来开启服务.

随后就是在项目中引入相关dll:
Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll
在项目的引用中引入Memcached.ClientLibrary.dll

随后就是编写程序了,在这里创建一个MVC程序:
在Models文件夹中创建一个类:

[Serializable]public class VIP{public string UserName { get; set; }public int? Vip { get; set; }public DateTime? VipEndDate { get; set; }public string Mail { get; set; }public string QQ { get; set; }}

登录后复制

若没有标注为可序列化,则后续运行程序将会报错。

随后创建一个MemcachedHelper类来辅助编程.

public class MemcachedHelper{public static MemcachedClient mclient;static MemcachedHelper(){string[] serverlist = new string[] { "127.0.0.1:11211" };SockIOPool pool = SockIOPool.GetInstance("First");pool.SetServers(serverlist);pool.Initialize();mclient = new MemcachedClient();mclient.PoolName = "First";mclient.EnableCompression = false;}public static bool set(string key, object value, DateTime expiry){return mclient.Set(key, value, expiry);}public static object Get(string key){return mclient.Get(key);}}

登录后复制

最后就是Controller里面的具体实现:

public class EntityMemcachedController : Controller    {        //        // GET: /EntityMemcached/        ///         /// 序列化实体类为字节数组,将其存储到Memcached中,以缓存数据,从而减轻访问压力....        ///         ///         public ActionResult Index()        {            var vipInfo = new List{                new VIP{ UserName="张三", Vip=1, QQ="3123456", Mail="3123456", VipEndDate=(DateTime?)DateTime.Now.AddDays(1) },                new VIP{ UserName="李四", Vip=1, QQ="4123456", Mail="4123456", VipEndDate=(DateTime?)DateTime.Now.AddDays(2) },                new VIP{ UserName="王五", Vip=1, QQ="5123456", Mail="5123456", VipEndDate=(DateTime?)DateTime.Now.AddDays(3) },                new VIP{ UserName="赵六", Vip=1, QQ="6123456", Mail="6123456", VipEndDate=(DateTime?)DateTime.Now.AddDays(4) },                new VIP{ UserName="刘七", Vip=1, QQ="7123456", Mail="7123456", VipEndDate=(DateTime?)DateTime.Now.AddDays(5) }            };                        if (Request.Cookies["_EntityMemcached"] == null)            {                string sessionId = Guid.NewGuid().ToString();                Response.Cookies["_EntityMemcached"].Value = sessionId;                Response.Cookies["_EntityMemcached"].Expires = DateTime.Now.AddMinutes(1);//设置cookie过期时间                MemcachedHelper.set(sessionId, vipInfo, DateTime.Now.AddMinutes(1));//设置缓存过期时间                return Content("Memcached分布式缓存设置成功!!!");            }            else            {                string key = Request.Cookies["_EntityMemcached"].Value.ToString();                object obj = MemcachedHelper.Get(key);                List info = obj as List;                if (info != null)                {                    return View(info);                }            }            return Content("若显示则有'bug'");        }

登录后复制

看看实现:

高性能缓存系统(Memcached)的实例介绍

高性能缓存系统(Memcached)的实例介绍

然后退出来,重新点击”实现memcached缓存”

高性能缓存系统(Memcached)的实例介绍

 我设置了一分钟之内的缓存,因此在这一分钟之内将一直是这个界面,不得不说memcached还是不错!后续接着研究OutputCached + Monogodb的缓存策略

以上就是高性能缓存系统(Memcached)的实例介绍的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2441143.html

(0)
上一篇 2025年3月3日 12:43:17
下一篇 2025年3月1日 10:17:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 怎么操作 ASP.NET Web API ?

    经过我三篇文章的解惑,webapi我相信大家没有问题了!   先创建了一个UserModel public class UserModel{public string UserID { get; set; }public string Us…

    2025年3月3日 编程技术
    200
  • 关于操作 ASP.NET Web API的实例

    wcf的野心造成了它的庞大复杂,http的单纯造就了它的简单优美。为了实现分布式web应用,我们不得不将两者凑合在一起 —— wcf服务以http绑定宿主于iis。   于是有了让人晕头转向的配置、让人郁闷不已的调试,还有那ServiceC…

    2025年3月3日 编程技术
    200
  • 操作 ASP.NET Web API 的实例教程

      概述 rest(representational state transfer表述性状态转移)而产生的rest api的讨论越来越多,微软在asp.net中也添加了web api的功能。 我们刚好看看Web API的使用,且看目前的版本…

    2025年3月3日 编程技术
    200
  • 全开源ASP.NET工作流平台的详细介绍

    现在办公要流程化,营销也有流程,流程现在已经是各种生活活动不可缺少的一部分了。就像这句耳熟能详的话:“凡事,我们先走个流程嘛!”,在信息化、流程化的背景下。工作流引擎,这个名词就出现了!那么,什么是工作流引擎呢?所谓工作流引擎是指workf…

    2025年3月3日 编程技术
    200
  • ASP.NET MVC 中关于路径这个问题

    很多人在写代码的时候关于路径这个问题很头疼,其实路径是很简单的,只是没人帮我们点投!初次学习程序的人,我相信肯定会遇到和我一样的问题,比如说,“/”和“~”引用路劲的区别,接下来看吧,这篇文章肯定会将你点透的,看完这篇文章你一定会有一种山重…

    编程技术 2025年3月3日
    200
  • 解决 ASP.NET Core MySql varchar 字符串截取实例教程

    asp.net core 中使用 mysql,如果字段类型为varchar,不管设置多少长度,插入或更新数据的时候,会自动截断(截取 255 长度的字符)。 出现问题的原因,就是使用了MySql.Data.EntityFrameworkCo…

    编程技术 2025年3月3日
    200
  • ASP.NET Core 返回 Json DateTime 格式

    asp.net core 返回 json 格式的时候,如果返回数据中有datetime类型,如何自定义其格式呢?配置如下: services.AddMvc().AddJsonOptions(opt =>{ opt.Serializer…

    编程技术 2025年3月3日
    100
  • asp.net MVC 网站图片怎么实现防盗链?

                                    目录1. 通过 URL Rewrite Module 组件2. 通过 nginx 图片防盗链3.自定义 HttpHandler 处理4. 通过 MVC 自定义路由规则防盗链5.…

    2025年3月3日 编程技术
    200
  • 分享一个“网红脸“”框架实例教程

    我是一名软件公司员工,从事撸码事业也有一段时间了。码代码已经成了我生活的一部分,我的撸码生活几乎一成不变。直到有一天,写字楼搬来了一家网红公司!  网红公司,什么是网红公司,在座的肯定都懂啦~就是那种漂亮妹妹很多的公司了!可别说我们公司那群…

    2025年3月3日 编程技术
    200
  • 编写高性能 .NET的实例教程

    减少分配率 这个几乎不用解释,减少了内存的使用量,自然就减少gc回收时的压力,同时降低了内存碎片与cpu的使用量。你可以用一些方法来达到这一目的,但它可能会与其它设计相冲突。 你需要在设计对象时仔细检查每个它并问自己: 我真的需要这个对象吗…

    编程技术 2025年3月3日
    200

发表回复

登录后才能评论