ITOO4.1之Memcached实践篇

来源:互联网 发布:知乎 quant 编辑:程序博客网 时间:2024/06/02 04:39

上篇博客小编主要讲解了Memcached的理论知识,对Memcached有了一定的了解之后,下一步就是要把Memcached应用的实际的项目开发中。这篇博客中,小编将对Memcached服务器的安装与Memcached的使用进行详细的介绍。

【Memcached安装】

一、首先需要我们做的就是从Memcached的官网上面去下载Memcached:http://memcached.org/downloads

二、接下来将解压后的下载文件放到计算机的某个盘里后,运行命令提示符:把路径转到放解压文件的地方(如下图,我解压路径是D盘下的memcach文件夹下)


三、接下来就是执行Memcached的一些命令了:

1)   Install命令-安装

2)   运行:start-开启Memcached服务

3)   Stop是停止Memcached服务

4)   Uninstall命令是卸载Memcached


5)   安装完成之后,可以在服务里面验证一下是否安装成功:

在命令提示符中输入cmd->services.msc查看服务:


四、  进行一些Memcached的简单操作

1)首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。 (如果输入telnet 后报telnet不是内部或外部命令的时候,做如下操作。)


2)输入stats效果

 

3)通过set方法把经常会用的一些数据存入Memcached当中,用get方法可以得到存入缓存中数据(输入key值作为标记)

 

【Memcached小demo】

1)简单介绍:首先是设置连接Memcached的IP地址,然后设置一些参数并指定连接方式,先用set方式设置一些常用值,然后在通过get方法获取缓存中的值。同时,在这里设置两个IP地址,也可以很好地解释一下Memcached的分布式:

2)代码示例:

using Memcached.ClientLibrary;using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace memcachedDemo.Controllers{    public class HomeController : Controller    {        string strTest = "";        public void Memcache() {//,             //添加多个缓存服务器地址            string[] serverlist = { "192.168.21.**2:11211","192.168.21.**5:11211"};              //初始化池              SockIOPool pool = SockIOPool.GetInstance();              pool.SetServers(serverlist);              //设置memcached 的一些参数              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();              // 获得客户端实例              MemcachedClient mc = new MemcachedClient();              mc.EnableCompression = false;                                                       Console.WriteLine("------------测   试-----------");              bool flags1 = mc.Set("user1", "my value!!!!!!");  //存储数据到缓存服务器,这里将字符串"my value"缓存,key 是"test"              bool flags2 = mc.Set("user2", "my value");              bool flags3 = mc.Set("user3", "my value");              bool flags4 = mc.Set("user4", "my value");              bool flags5 = mc.Set("user5", "my value");              bool flags6 = mc.Set("user6", "my value");             if (mc.KeyExists("user2"))   //测试缓存存在key为test的项目              {                  Console.WriteLine("test is Exists");                  Console.WriteLine(mc.Get("user2").ToString());  //在缓存中获取key为test的项目                  this.strTest = mc.Get("user2").ToString();              }             else              {                  Console.WriteLine("test not Exists");              }              // Console.ReadLine();             bool flag = mc.Delete("user2");  //移除缓存中key为test的项目             if (mc.KeyExists("user2"))              {                  Console.WriteLine("test is Exists");                  Console.WriteLine(mc.Get("user2").ToString());              }             else              {                  Console.WriteLine("test not Exists");              }                            SockIOPool.GetInstance().Shutdown();  //关闭池, 关闭sockets                          //Console.ReadLine();          }        //        // GET: /Home/        public ActionResult Index()        {            Memcache();            ViewData["strTest"] = strTest;            return View();        }    }}
在运行程序的时候,我们可以打开Memcached命令窗口然后在各台服务器上面测试一下存入的数据,实践之后,你会很清楚的明白分布式缓存。


【学习小结】

前两天在小组内分享学习的Memcached,因为在做高校的时候用到的就有Memcached,而且高校里面也是有不小的数据量,当然对于其中的一些常用的数据存储在Memcached里面,无疑可以提高性能。当时说好要研究缓存的时候,我就一门心思的找Memcached的相关资料:什么是Memcached、为什么说它是分布式的、如何在代码中体现Memcached的。当然也从网上搜集了一些视频资料。技术分享的时候,小组长问了我这么一个问题:有好多缓存的技术,为什么咱们要用Memcached,它到底有什么优势?我竟无言以对,其实在对知识探索的过程中,我们凡事多问个为什么,换一种思考问题的方式。或许会有不一样的感悟。




2 0
原创粉丝点击