首页后端开发ASP.NET高性能缓存系统(Memcached)的实例介绍

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

时间2024-01-30 10:25:03发布访客分类ASP.NET浏览687
导读:收集整理的这篇文章主要介绍了高性能缓存系统(Memcached)的实例介绍,觉得挺不错的,现在分享给大家,也给大家做个参考。在Memcached中实体类型未经序列化不能在Memcached中缓存,因此需要对实体类进行处理,才能缓存下来.Me...
收集整理的这篇文章主要介绍了高性能缓存系统(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/        /// summary>
            /// 序列化实体类为字节数组,将其存储到Memcached中,以缓存数据,从而减轻访问压力....        /// /summary>
            /// returns>
    /returns>
        public ActionResult Index()        {
                VAR vipInfo = new ListVIP>
{
                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);
                    ListVIP>
     info = obj as ListVIP>
    ;
                if (info != null)                {
                        return View(info);
                }
            }
                return Content("若显示则有'bug'");
        }
    

看看实现:

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

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

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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

ASP.NETMemcached系统高性能

若转载请注明出处: 高性能缓存系统(Memcached)的实例介绍
本文地址: https://pptw.com/jishu/592397.html
JavaScript怎么打印星星 图文结合带你搞懂Nodejs中的事件循环

游客 回复需填写必要信息