设为首页 收藏本站
查看: 1277|回复: 0

[经验分享] 分布式缓存方案:Memcached初探

[复制链接]

尚未签到

发表于 2015-9-1 00:21:05 | 显示全部楼层 |阅读模式
  .net 框架中为我们提供了一个Cache对象用来处理系统缓存,Cache对象使用起来非常方便,
  相信大家对Cache对象应该不会陌生。然而Cache对象缓存的对象存放本机的内存,这样便限制了我们缓存对象的大小和数量。
  
  在这篇文章中我主要想介绍一个开源项目:memcached(一个提供分布式缓存策略的项目)
  Memcached在一些大型java与PHP项目中有较广泛的应用(例如FaceBook)。通过memcached建立一个可管理的且相对独立的缓存层,减少应用程序与数据库之间的频繁访问。这正是memcached的魅力所在。
  
  本文不讨论memcached的内部实现机制。主要是讲述一下memcached的具体使用方法(更具体一点应该是memcached在。Net下使用)。
  
  Memcached的使用主要分两部分:memcached服务器端架设与memcached客户端调用。
  
  下面分别讲述一下具体操作。
  
  memcached服务器端架设:我们从网上下载memcached的WIN32服务端安装包。本文中用的是memcached-1.2.1-win32版。
  我们解压文件到一个目录memcached。然后打开命令行窗口,用dos命令跳转到memcached目录下,执行如下命令:
  C:"memcached>memcached.exe -d install
  
  C:"memcached>memcached.exe -d start
  -d参数是开启守护进程。默认开启的是本机的11211端口
  
  其他参数可以用-h查看。
  这样我们的服务器端就架好了,很容易。
  卸载的命令为:
  C:"memcached>memcached.exe -d stop
  
  C:"memcached>memcached.exe -d uninstall
  
  
  memcached客户端调用:我们也从网上下载memcached的.net(C#)的客户端API包,
  本文用的是memcacheddotnet_clientlib-1.1.5.zip版本。
  注意:一个客户端可以调用多个memcached服务端。(也就是说一个项目可以架多个memcached服务端)当然这些memcached服务端应该在不同的服务器上,,不然没有任何意义。
  下面用一个实例来讲解如何使用memcached的ClientAPI.
  新建一个WEBSITE项目。
  我们要在项目中引入Commons.dll; ICSharpCode.SharpZipLib.dll; Memcached.ClientLibrary.dll
  在default.aspx.cs的代码如下:
  

DSC0000.gif DSC0001.gif Code
DSC0002.gif using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Memcached.ClientLibrary;

namespace Memcachled
DSC0003.gif {
DSC0004.gif     public partial class _Default : System.Web.UI.Page
DSC0005.gif DSC0006.gif     {
        protected void Page_Load(object sender, EventArgs e)
        {
         
            string[] serverlist = { "127.0.0.1:11211" }; //服务器列表,可多个         
            SockIOPool pool = SockIOPool.GetInstance();

            /**/////根据实际情况修改下面参数
            pool.SetServers(serverlist);
            pool.InitConnections = 3;
            pool.MinConnections = 3;
            pool.MaxConnections = 5;
            pool.SocketConnectTimeout = 1000;
            pool.SocketTimeout = 3000;
            pool.MaintenanceSleep = 30;
            pool.Failover = true;
            pool.Nagle = false;
            pool.Initialize(); // initialize the pool for memcache servers

            MemcachedClient mc = new MemcachedClient();//初始化一个客户端     
            mc.EnableCompression = false;

            mc.Add("TestAdd", "增加的数据");//增加一个缓存数据
            Response.Write("增加了一个缓存数据:"+"KEY:TestAdd "+ " VALUE:"+mc.Get("TestAdd").ToString());//取出刚才加入的缓存数据

            Response.Write("<br />");

            mc.Set("TestAdd", "修改了数据");
            Response.Write("修改一个缓存数据:" + "KEY:TestAdd " + " VALUE:" + mc.Get("TestAdd").ToString());

            Response.Write("<br />");

            mc.Delete("TestAdd");//删除一个已存在的缓存

            SockIOPool.GetInstance().Shutdown();//关闭
DSC0007.gif         }
    }
DSC0008.gif }
  结果我就不贴出来了。
  文中的 memcacheddotnet_clientlib-1.1.5.zip与memcached-1.2.1-win32.zip我明天整理下再发上来。很晚啦~.
  写的匆忙,有不对之处,还望见谅!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-106888-1-1.html 上篇帖子: 基于memcached协议构建自定义协议 下篇帖子: memcached下载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表