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

[经验分享] 初识 Memcached【一】

[复制链接]

尚未签到

发表于 2015-9-1 10:10:09 | 显示全部楼层 |阅读模式
  关于 Memcached 大家都已经比较熟悉了,来自百度百科介绍如下:

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

  今天研究了一下,也算是简单的测试通过了,下面介绍自己的步骤,有什么不到位的,或者有误的,还请大牛即使指正,谢谢!
  1. 首先去 Memcached 的官网下载最新的源代码,地址:http://memcached.org/,目前最新的版本是:Memcached 1.4.15。
  2. 用C++或者tc编译源代码,然后生成exe文件。我这里有编译好的文件,不过版本是 1.2.5,点击这里下载。
  3. 解压缩文件到 c:\memcached
  4. 命令行输入 'c:\memcached\memcached.exe -d install'
  5. 命令行输入 'c:\memcached\memcached.exe -d start' ,该命令启动 memcached ,默认监听端口为 11211,通过 memcached.exe -h 可以查看其帮助。
DSC0000.png
  6. 下载 memcached .net client lib,下载地址:http://sourceforge.net/projects/memcacheddotnet/,我下载的版本是:memcacheddotnet_clientlib-1.1.5
  7. 解压后,就可以看到源代码了,用 VS 打开,编译后在 Release 文件夹下把下面的 DLL 文件 Copy 出来。
DSC0001.png
  8. 重新新建一个测试项目,比如 Web 应用程序。添加对上面那 4 个 DLL 的引用。
DSC0002.png
  9. 在 index.aspx 和 index.aspx.cs 中撰写测试代码,比如我的是:


DSC0003.gif DSC0004.gif View Code


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="DearBruce.MemcachedTest.WebApp.index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
div{ margin: 20px;}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnInitSockIOPool" runat="server" Text="初始化池、Socket" OnClick="btnInitSockIOPool_Click" />
</div>
<div>
<asp:TextBox ID="txtUserInput" runat="server" Width="300px" />
<asp:Button ID="btnSetValueToMemcached" runat="server" Text="设置值到 Memcached" OnClick="btnSetValueToMemcached_Click" />
</div>
<div>
<asp:Button ID="btnGetValueFromMemcached" runat="server" Text="从 Memcached 得到值" OnClick="btnGetValueFromMemcached_Click" />
</div>
<div>
<asp:Button ID="btnDeleteValueFromMemcached" runat="server" Text="从 Memcached 移除值" OnClick="btnDeleteValueFromMemcached_Click" />
</div>
<div>
<asp:Button ID="btnClosePool" runat="server" Text="关闭池、Socket" OnClick="btnClosePool_Click" />
</div>
<div>
<asp:Literal ID="ltMessage" runat="server" ViewStateMode="Disabled" />
</div>
</form>
</body>
</html>

View Code


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Memcached.ClientLibrary;
namespace DearBruce.MemcachedTest.WebApp
{
public partial class index : System.Web.UI.Page
{
private const string MemcachedKey = "TestKey";
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
}
}
protected void InitSockIOPool()
{
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();
}
protected void btnSetValueToMemcached_Click(object sender, EventArgs e)
{
string txtUserInput = this.txtUserInput.Text;
if (string.IsNullOrEmpty(txtUserInput))
{
ShowMessage("请输入要设置的值!");
return;
}
// 获得客户端实例
MemcachedClient mc = new MemcachedClient();
mc.EnableCompression = false;

mc.Set(MemcachedKey, txtUserInput);
ShowMessage("设置成功!");
}
protected void btnGetValueFromMemcached_Click(object sender, EventArgs e)
{
MemcachedClient mc = new MemcachedClient();
if (mc.KeyExists(MemcachedKey))
{
ShowMessage("您输入的值为:" + mc.Get(MemcachedKey).ToString());
}
else
{
ShowMessage(string.Format("Memcached 中不存在键为 \"{0}\" 的项!", MemcachedKey));
}
}
protected void btnDeleteValueFromMemcached_Click(object sender, EventArgs e)
{
MemcachedClient mc = new MemcachedClient();
mc.Delete(MemcachedKey);  //移除缓存中key为test的项目

}
protected void btnInitSockIOPool_Click(object sender, EventArgs e)
{
InitSockIOPool();
}
protected void btnClosePool_Click(object sender, EventArgs e)
{
SockIOPool.GetInstance().Shutdown();  //关闭池, 关闭sockets
        }
protected void ShowMessage(string message)
{
this.ltMessage.Text += message;
}
}
}
  
  10. 运行,测试,成功!
DSC0005.png
  其它 .NET 客户端介绍
  EnyimMemcached
  可参考地址:
  http://www.cnblogs.com/dudu/p/performance-monitor-enyim-memcached.html
  http://zhoufoxcn.blog.iyunv.com/792419/528212/
  
  可参考网址:
  memcached罢工引发的血案-博客园评论超时问题处理过程
  memcached - Google Code

  Discuz!NT中集成Memcached分布式缓存 - daizj - 戴振军 - 博客园
  谢谢浏览!

运维网声明 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-108250-1-1.html 上篇帖子: window下安装memcached,及简单使用 下篇帖子: Memcached分布式Cache
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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