zoukankan      html  css  js  c++  java
  • memcache实战之三 :客户端 enyim.com Memcached Client 的安装与调试以及实例,2012年下载地址

    注意: enyim.com Memcached Client  只能和 .net 3.5 或者是以上的版本一起使用,而不支持.net 2.0 因为他有些地方用的是 linq

    但是很奇怪的是,客户端 Memcached Providers 1.2 for .net 2.0的版本里面 也是包含 enyim.com Memcached Client 的,为什么这个又能用net 2.0呢?

    于是我把 Memcached Providers 1.2 for .net 2.0的版本里面的enyim.com Memcached Client  直接拿来用了一下,发现运行起来是报错的,所以在 .net 2.0下面,暂时还用不了,或者说,我还没下载到正确的对应的版本? 

    ( 更新:在文章的下面,已经找到了既可以支持2.0又支持3.5的dll文件了)

    下载地址  https://github.com/enyim/EnyimMemcached  应该是3.5的

    image

    下载完成之后,如是样子

    image

    image

    去bin文件夹,拿到刚才生成的  Enyim.Caching.dll  (也需要 log4net.dll )

    复制到你的实际的项目中的bin文件夹,引用

    在实际操作中,上面的一步步流程,我可耻的失败了····  在.net 2.0 也报错,在.net 3.5 也报错

    后面我又找到了一个别人修改过的版本,我发现既可以在.net 2.0下使用,又可以在 .net 3.5下使用的 dll

    我自己写了一个既可以用在net 2.0又可以3.5的例子,然后也给出一下我参考的一个实例

    1:我自己的例子  http://download.csdn.net/detail/lihuabajie/4689835

    2:我参考的实例  http://download.csdn.net/detail/lihuabajie/4690399

    如果需要 MemcachedProviders for .net 2.0 的客户端的实例  http://download.csdn.net/detail/lihuabajie/4690044

    下面是我写的一个实例的截图(注意,不管是 Enyim.Caching 还是 MemcachedProviders ,都是需要 log4net 的)

    image

    需要用的一个“人”类,用来存放数据

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Collections;
    
    namespace My_Enyim.Caching
    {
        
        /// <summary>测试用的人类
        /// 
        /// </summary>
        [Serializable]  //注意,一定要加 序列化
        public class Person
        {
            public string Id { set; get; }
            public string Username { set; get; }
    
        }
    
    }
    

    前台代码

    <form id="form1" runat="server">
        <div>请输入用户ID<asp:TextBox ID="txtId" runat="server"></asp:TextBox>
            <asp:Button ID="btnSearch" runat="server" Text="搜索" OnClick="Search" />
            <asp:Literal ID="litType" runat="server"></asp:Literal>
            <asp:Literal ID="litResult" runat="server"></asp:Literal>
             
            <br />
            <br />
            修改值:<asp:TextBox ID="txtNew" runat="server"></asp:TextBox>
             
            <br />
            <br />
            <asp:Button ID="btnClear" runat="server" Text="清空缓存" onclick="btnClear_Click" />
        
        </div>
        </form>
    

    后台代码

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Enyim.Caching;//引用
    using Enyim.Caching.Memcached;//引用
    
    namespace My_Enyim.Caching
    {
    
        public partial class _Default : System.Web.UI.Page
        {
            MemcachedClient mc = new MemcachedClient();
            List<Person> listp = new List<Person> { };
            
            protected void Page_Load(object sender, EventArgs e)
            {
                //初始化几个人
                for (int i = 0; i < 10; i++)
                {
                    listp.Add(new Person() { Id = "joey_" + i.ToString() + "_投票", Username = "随便什么值" + i });
                }
            }
    
            protected void Search(object sender, EventArgs e)
            {
                
                string id = txtId.Text.Trim();
                string newVal = txtNew.Text.Trim();
                Person per = null;
    
                for (int i = 0; i < listp.Count; i++)
                {
                    if (listp[i].Id == id)
                    {
                        per = listp[i];
    
                        TimeSpan time= new TimeSpan(0,1,0); //1分钟
    
                        //如果缓存不存在,我们就把person这个实体放进去
                        if (mc.Get(per.Id) == null)
                        {
                            
                            //存值  不带过期时间的存储,Memcached将根据LRU来决定过期策略
                            //      带过期时间的缓存,会根据过期时间来失效
    
                            //StoreMode.Set如果不存在, 则添加,如果已经存在,则覆盖            
                            mc.Store(StoreMode.Set, per.Id, per, time);
    
                            //mc.Store(StoreMode.Set,per.Id,DateTime.Now.AddMinutes(10)); //也可以这样来表示10分钟到期
    
                            litType.Text = "从数据库读,并增加到缓存";
                            litResult.Text = per.Username;
    
                        }
                        else
                        {
                            if (!string.IsNullOrEmpty(newVal))
                            {
                                per.Username = newVal;
                                
                                mc.Store(StoreMode.Set, per.Id, per, time);//同样的key,再次添加,实际是更新值
                                txtNew.Text = "";
                            }
                            litType.Text = "从缓存来读";
                            Person temp = (Person)mc.Get(per.Id);
                            litResult.Text = temp.Username;
                        }
                    }
                }
            }
    
            //清空缓存
            protected void btnClear_Click(object sender, EventArgs e)
            {
                mc.FlushAll();
                litType.Text = "";
                litResult.Text = "清除所有缓存";
    
            }
        }
    }
    
  • 相关阅读:
    关于回溯与招聘市场
    关于回溯与马
    关于回溯和后宫
    关于兔子
    关于递归和斐波那契数列
    关于递归和汉诺塔
    关于简单汉诺塔
    nodejs报错roll back,because of a error.node.js setup wizard ended prematurel
    fatal error C1859 意外的预编译头错误,只需重新运行编译器
    sqlserver2008 无法设置主体sa的凭据
  • 原文地址:https://www.cnblogs.com/joeylee/p/2737635.html
Copyright © 2011-2022 走看看