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

[经验分享] memcached系列1:memcached实例

[复制链接]

尚未签到

发表于 2015-9-1 11:58:17 | 显示全部楼层 |阅读模式
  转载之 http://www.cnblogs.com/luyinghuai/archive/2008/08/28/1278200.html
  在上一篇文章,我们讲了,为什么要使用memched做为缓存服务器(没看的同学请点这里)。下面让我们以memcached-1.2.1-win32版本的服务组件(安装后是以一个windows服务做daemon)和 C#API(Enyim.Caching)为基础,做一个"Hello world"级的程序,让我们真正感受到memcached就在我们身边。后一的文章,我们还讲memcached的核心部分(根据key来hash存取数据,缓存数据在server端的内存存储结构)和一些好的案例。
  下面的实例实现的功能很简单,根据key来存取一个object对象(要支持Serializable才行哦),因为服务器端数据都是byte型的数据组实现存在。
  服务的启动:
  1, 将memcached-1.2.1-win32.zip解决到指定的地方,如c:\memcached
  2, 命令行输入 'c:\memcached\memcached.exe -d install'   
3, 命令行输入 'c:\memcached\memcached.exe -d start' ,该命令启动 Memcached,默认监听端口为 11211   
  可以通过 memcached.exe -h 可以查看其帮助
  第一步:配置config文件
  <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?>   
<configuration>   
<configSections>   
<sectionGroup name=&quot;enyim.com&quot;>   
<section name=&quot;memcached&quot; type=&quot;Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching&quot; />   
</sectionGroup>   
<section name=&quot;memcached&quot; type=&quot;Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching&quot; />   
</configSections>   
<enyim.com>   
<memcached>   
<servers>   
<!-- put your own server(s) here-->   
<add address=&quot;127.0.0.1&quot; port=&quot;11211&quot; />   
</servers>   
<socketPool minPoolSize=&quot;10&quot; maxPoolSize=&quot;100&quot; connectionTimeout=&quot;00:00:10&quot; deadTimeout=&quot;00:02:00&quot; />   
</memcached>   
</enyim.com>   
<memcached keyTransformer=&quot;Enyim.Caching.TigerHashTransformer, Enyim.Caching&quot;>   
<servers>   
<add address=&quot;127.0.0.1&quot; port=&quot;11211&quot; />   
</servers>   
<socketPool minPoolSize=&quot;2&quot; maxPoolSize=&quot;100&quot; connectionTimeout=&quot;00:00:10&quot; deadTimeout=&quot;00:02:00&quot; />   
</memcached>   
</configuration>
  这里的port:11211是, memcached-1.2.1-win32在安装时默认使用的port.当然你可以用memcached.exe -p 端口号来自行设置。
  第二步, 新建TestMemcachedApp的console project
  引用Enyim.Caching.dll或者在solution中加入这个project(可以下载的代码中找到)。
  基础代码如下:
  //create a instance of MemcachedClient   
MemcachedClient mc = new MemcachedClient();   
// store a string in the cache   
mc.Store(StoreMode.Set, &quot;MyKey&quot;, &quot;Hello World&quot;);   
// retrieve the item from the cache   
Console.WriteLine(mc.Get(&quot;MyKey&quot;));
  完整代码如下,
  using System;   
using System.Collections.Generic;   
using System.Text;   
using Enyim.Caching;   
using Enyim.Caching.Memcached;   
using System.Net;   
using Enyim.Caching.Configuration;   
namespace DemoApp   
{   
class Program   
    {   
static void Main(string[] args)   
        {   
// create a MemcachedClient   
// in your application you can cache the client in a static variable or just recreate it every time   
            MemcachedClient mc = new MemcachedClient();   
// store a string in the cache   
            mc.Store(StoreMode.Set, &quot;MyKey&quot;, &quot;Hello World&quot;);   
// retrieve the item from the cache   
            Console.WriteLine(mc.Get(&quot;MyKey&quot;));   
// store some other items   
            mc.Store(StoreMode.Set, &quot;D1&quot;, 1234L);   
            mc.Store(StoreMode.Set, &quot;D2&quot;, DateTime.Now);   
            mc.Store(StoreMode.Set, &quot;D3&quot;, true);   
            mc.Store(StoreMode.Set, &quot;D4&quot;, new Product());   
            mc.Store(StoreMode.Set, &quot;D5&quot;, new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });            
            Console.WriteLine(&quot;D1: {0}&quot;, mc.Get(&quot;D1&quot;));   
            Console.WriteLine(&quot;D2: {0}&quot;, mc.Get(&quot;D2&quot;));   
            Console.WriteLine(&quot;D3: {0}&quot;, mc.Get(&quot;D3&quot;));   
            Console.WriteLine(&quot;D4: {0}&quot;, mc.Get(&quot;D4&quot;));   
byte[] tmp = mc.Get<byte[]>(&quot;D5&quot;);   
// delete them from the cache   
            mc.Remove(&quot;D1&quot;);   
            mc.Remove(&quot;D2&quot;);   
            mc.Remove(&quot;D3&quot;);   
            mc.Remove(&quot;D4&quot;);   
// add an item which is valid for 10 mins   
            mc.Store(StoreMode.Set, &quot;D4&quot;, new Product(), new TimeSpan(0, 10, 0));   
            Console.ReadLine();   
        }   
// objects must be serializable to be able to store them in the cache   
        [Serializable]   
class Product   
        {   
public double Price = 1.24;   
public string Name = &quot;Mineral Water&quot;;   
public override string ToString()   
            {   
return String.Format(&quot;Product {{{0}: {1}}}&quot;, this.Name, this.Price);   
            }   
        }   
    }   
}
  Server和Client API及实例代码下载(在Enyim Memcached 1.2.0.2版本上的修改)
  下载memcached服务安装地址:http://www.danga.com/memcached/
  Client API下载地址:http://www.danga.com/memcached/apis.bml
  

运维网声明 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-108334-1-1.html 上篇帖子: Memcached管理与监控工具 memAdmin 下篇帖子: memcached源代码阅读(2)-main函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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