• Memcached Cache


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using Memcached.ClientLibrary;
    using System.Collections;
    
    namespace WL.Web.Common
    {
        public class MemcacheX
        {
    
          
                private MemcachedClient client;
                private static MemcacheX memcache;
    
                /// <summary>
                /// 构造方法
                /// </summary>
                protected MemcacheX()
                {
                    SockIOPool pool = SockIOPool.GetInstance();
                    string[] servers = { "127.0.0.1:11211" };
                    pool.SetServers(servers);
                    pool.MinConnections = 3;
                    pool.MaxConnections = 5;
                    pool.InitConnections = 3;
                    pool.SocketConnectTimeout = 5000;
                    pool.Initialize();
                    this.client = new MemcachedClient();
                    client.EnableCompression = false;
                }
    
                public static MemcacheX Instance()
                {
                    if (memcache == null)
                    {
                        memcache = new MemcacheX();
                    }
                    return memcache;
                }
    
    
                /// <summary>
                /// 判断是否包含某个键
                /// </summary>
                /// <param name="argKey">键值</param>
                /// <returns></returns>
                public bool ContainKey(string argKey)
                {
                    return client.KeyExists(argKey);
                }
    
                /// <summary>
                /// 添加缓存数据
                /// </summary>
                /// <param name="argKey">键值</param>
                /// <param name="argValue">存储值</param>
                /// <returns></returns>
                public bool Add(string argKey, object argValue)
                {
                    return client.Add(argKey, argValue);
                }
    
                /// <summary>
                /// 添加缓存数据
                /// </summary>
                /// <param name="argKey">键值</param>
                /// <param name="argValue">存储值</param>
                /// <param name="argDateExpiration">过期时间</param>
                /// <returns></returns>
                public bool Add(string argKey, object argValue, DateTime argDateExpiration)
                {
                    return client.Add(argKey, argValue, argDateExpiration);
                }
    
                /// <summary>
                /// 添加缓存数据
                /// </summary>
                /// <typeparam name="T">存储对象类型</typeparam>
                /// <param name="argKey">键值</param>
                /// <param name="entity">存储值</param>
                /// <returns></returns>
                public bool Add<T>(string argKey, T entity) where T : class
                {
                    return client.Add(argKey, entity);
                }
    
                /// <summary>
                /// 添加缓存数据
                /// </summary>
                /// <typeparam name="T">存储对象类型</typeparam>
                /// <param name="argKey">键值</param>
                /// <param name="entity">存储值</param>
                /// <param name="argDateExpiration">过期时间</param>
                /// <returns></returns>
                public bool Add<T>(string argKey, T entity, DateTime argDateExpiration) where T : class
                {
                    return client.Add(argKey, entity, argDateExpiration);
                }
    
                /// <summary>
                /// 添加缓存数据,如果存在则替换原有数据
                /// </summary>
                /// <param name="argKey">键值</param>
                /// <param name="argValue">存储值</param>
                /// <returns></returns>
                public bool Set(string argKey, object argValue)
                {
                    if (ContainKey(argKey))
                    {
                        return false;
                    }
                    return client.Set(argKey, argValue);
                }
    
                /// <summary>
                /// 添加缓存数据,如果存在则替换原有数据
                /// </summary>
                /// <param name="argKey">键值</param>
                /// <param name="argValue">存储值</param>
                /// <param name="argDateExpiration">过期时间</param>
                /// <returns></returns>
                public bool Set(string argKey, object argValue, DateTime argDateExpiration)
                {
                    if (ContainKey(argKey))
                    {
                        return false;
                    }
                    return client.Set(argKey, argValue, argDateExpiration);
                }
    
                /// <summary>
                /// 添加缓存数据,如果存在则替换原有数据
                /// </summary>
                /// <typeparam name="T">存储对象类型</typeparam>
                /// <param name="argKey">键值</param>
                /// <param name="entity">存储值</param>
                /// <returns></returns>
                public bool Set<T>(string argKey, T entity) where T : class
                {
                    if (ContainKey(argKey))
                    {
                        return false;
                    }
                    return client.Set(argKey, entity);
                }
    
                /// <summary>
                /// 添加缓存数据,如果存在则替换原有数据
                /// </summary>
                /// <typeparam name="T">存储对象类型</typeparam>
                /// <param name="argKey">键值</param>
                /// <param name="entity">存储值</param>
                /// <param name="argDateExpiration">过期时间</param>
                /// <returns></returns>
                public bool Set<T>(string argKey, T entity, DateTime argDateExpiration) where T : class
                {
                    if (ContainKey(argKey))
                    {
                        return false;
                    }
                    return client.Set(argKey, entity, argDateExpiration);
                }
    
    
                /// <summary>
                /// 替换原有缓存
                /// </summary>
                /// <param name="argKey">键值</param>
                /// <param name="argValue">存储值</param>
                /// <returns></returns>
                public bool Replace(string argKey, object argValue)
                {
                    return client.Replace(argKey, argValue);
                }
    
                /// <summary>
                /// 替换原有缓存
                /// </summary>
                /// <param name="argKey">键值</param>
                /// <param name="argValue">存储值</param>
                /// <param name="argDateExpiration">过期时间</param>
                /// <returns></returns>
                public bool Replace(string argKey, object argValue, DateTime argDateExpiration)
                {
                    return client.Replace(argKey, argValue, argDateExpiration);
                }
    
                /// <summary>
                /// 替换原有缓存
                /// </summary>
                /// <typeparam name="T">存储类型</typeparam>
                /// <param name="argKey">键值</param>
                /// <param name="entity">存储值</param>
                /// <returns></returns>
                public bool Replace<T>(string argKey, T entity) where T : class
                {
                    return client.Replace(argKey, entity);
                }
    
                /// <summary>
                /// 替换原有缓存
                /// </summary>
                /// <typeparam name="T">存储类型</typeparam>
                /// <param name="argKey">键值</param>
                /// <param name="entity">存储值</param>
                /// <param name="argDateExpiration">过期时间</param>
                /// <returns></returns>
                public bool Replace<T>(string argKey, T entity, DateTime argDateExpiration) where T : class
                {
                    return client.Replace(argKey, entity, argDateExpiration);
                }
    
                /// <summary>
                /// 获得缓存数据
                /// </summary>
                /// <param name="argKey">键值</param>
                /// <returns></returns>
                public object Get(string argKey)
                {
                    return client.Get(argKey);
                }
    
                /// <summary>
                /// 获得缓存数据
                /// </summary>
                /// <typeparam name="T">返回数据类型</typeparam>
                /// <param name="argKey">键值</param>
                /// <returns></returns>
                public T Get<T>(string argKey)
                {
                    T entity = default(T);
                    entity = (T)client.Get(argKey);
                    return entity;
                }
    
                /// <summary>
                /// 移除一个缓存数据
                /// </summary>
                /// <param name="argKey">键值</param>
                /// <returns></returns>
                public bool Remove(string argKey)
                {
                    return client.Delete(argKey);
                }
    
                /// <summary>
                /// 移除一个缓存数据
                /// </summary>
                /// <param name="argKey">键值</param>
                /// <param name="argDateExpiration">数据过期时间</param>
                /// <returns></returns>
                public bool Remove(string argKey, DateTime argDateExpiration)
                {
                    return client.Delete(argKey, argDateExpiration);
                }
    
                /// <summary>
                /// 移除所有缓存数据
                /// </summary>
                /// <returns></returns>
                public bool Remove()
                {
                    return client.FlushAll();
                }
    
                /// <summary>
                /// 移除所有缓存数据
                /// </summary>
                /// <param name="servers">服务器地址</param>
                /// <returns></returns>
                public bool Remove(ArrayList servers)
                {
                    return client.FlushAll(servers);
                }
            
    
        }
    }
    

      

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    using System.Data;
    using yww.Utils;
    using System.Collections;
    using Memcached.ClientLibrary;
    using System.Text;
    namespace WL.Web
    {
        public partial class test : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    
                }
            }
    
    
            private void myload()
            {
                //分布Memcachedf服务IP 端口
                string[] servers = { "192.168.1.83:11211" };
    
                //初始化池
                SockIOPool pool = SockIOPool.GetInstance();
                pool.SetServers(servers);
                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 Memcached.ClientLibrary.MemcachedClient();
                mc.EnableCompression = false;
                Hashtable ht = mc.Stats();
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("<br>_______________________________________<br>");
                sb.AppendLine("Memcached Stats:");
                sb.AppendLine("<br>_______________________________________<br>");
                foreach (DictionaryEntry de in ht)
                {
                    Hashtable info = (Hashtable)de.Value;
                    foreach (DictionaryEntry de2 in info)
                    {
                        sb.AppendLine(de2.Key.ToString() + ":    " + de2.Value.ToString() + "<br>");
                    }
                }
                Response.Write(sb.ToString());
            }
    
    
            public void clear()
            {
                string[] servers = { "192.168.1.83:11211" };
    
                //初始化池
                SockIOPool pool = SockIOPool.GetInstance();
                pool.SetServers(servers);
                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 Memcached.ClientLibrary.MemcachedClient();
                mc.EnableCompression = false;
                mc.Delete("dt");
                Response.Write("清空缓存成功");
            }
    
    
            public void tt()
            {
                //分布Memcachedf服务IP 端口
                string[] servers = { "192.168.1.83:11211" };
    
                //初始化池
                SockIOPool pool = SockIOPool.GetInstance();
                pool.SetServers(servers);
                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 Memcached.ClientLibrary.MemcachedClient();
                mc.EnableCompression = false;
                StringBuilder sb = new StringBuilder();
                //写入缓存
                sb.AppendLine("写入缓存测试:");
                sb.AppendLine("<br>_______________________________________<br>");
                if (mc.KeyExists("cache"))
                {
                    sb.AppendLine("缓存cache已存在");
                }
                else
                {
                    mc.Set("cache", "写入缓存时间:" + DateTime.Now.ToString());
                    sb.AppendLine("缓存已成功写入到cache");
                }
                sb.AppendLine("<br>_______________________________________<br>");
                sb.AppendLine("读取缓存内容如下:<br>");
                sb.AppendLine(mc.Get("cache").ToString());
    
                //测试缓存过期
                sb.AppendLine("<br>_______________________________________<br>");
                if (mc.KeyExists("endCache"))
                {
                    sb.AppendLine("缓存endCache已存在,过期时间为:" + mc.Get("endCache").ToString());
                }
                else
                {
                    mc.Set("endCache", DateTime.Now.AddMinutes(1).ToString(), DateTime.Now.AddMinutes(1));
                    sb.AppendLine("缓存已更新写入到endCache,写入时间:" + DateTime.Now.ToString() + " 过期时间:" + DateTime.Now.AddMinutes(1).ToString());
                }
    
                //分析缓存状态
                Hashtable ht = mc.Stats();
                sb.AppendLine("<br>_______________________________________<br>");
                sb.AppendLine("Memcached Stats:");
                sb.AppendLine("<br>_______________________________________<br>");
                foreach (DictionaryEntry de in ht)
                {
                    Hashtable info = (Hashtable)de.Value;
                    foreach (DictionaryEntry de2 in info)
                    {
                        sb.AppendLine(de2.Key.ToString() + ":    " + de2.Value.ToString() + "<br>");
                    }
                }
                Response.Write(sb.ToString());
            }
    
            public void setTable()
            {
                
                StringBuilder sb = new StringBuilder();
                DataTable dt = Common.DataBase.GetTableRegion();
                sb.AppendLine("---------------------------------<br>");
                sb.AppendLine("DataTable 条数:"+dt.Rows.Count+"<br>");
                Common.MemcacheX mc =  Common.MemcacheX.Instance();
    
                if (mc.ContainKey("dt"))
                {
                    sb.AppendLine("缓存dt已存在");
                }
                else
                {
                    bool b = mc.Set<DataTable>("dt", dt);
                    sb.AppendLine("DataTable保存到MC中返回结果:" + b + "<br>");
                }
    
    
               
    
                
    
    
               
                sb.AppendLine("---------------------------------<br>");
              
    
                Response.Write(sb.ToString());
            }
    
            public void getTable()
            {
    
                StringBuilder sb = new StringBuilder();
                
                sb.AppendLine("---------------------------------<br>");
                
                Common.MemcacheX mc = Common.MemcacheX.Instance();
                DataTable dt = mc.Get<DataTable>("dt");
                if (dt != null)
                {
                    sb.AppendLine("cache 中读取到"+dt.Rows.Count+"条记录<br>");
                }
                else
                {
                    sb.AppendLine("cache 中没有读到数据<br>");
                }
                sb.AppendLine("---------------------------------<br>");
    
    
                Response.Write(sb.ToString());
            }
    
    
    
            protected void btn_save_Click(object sender, EventArgs e)
            {
                setTable();
            }
    
            protected void btn_load_Click(object sender, EventArgs e)
            {
                getTable();
            }
    
            protected void btn_clear_Click(object sender, EventArgs e)
            {
                clear();
            }
            protected void btn_stats_Click(object sender, EventArgs e)
            {
                myload();
            }
       
            
        }
    }
    

      https://files.cnblogs.com/files/ainidewen/资料.rar

  • 相关阅读:
    正则判断是否为纯数值
    前后端加密解密crypto.js
    小程序使用iconfont字体图标
    LeetCode-Combination Sum II
    LeetCode-Combination Sum
    Google 2013 campus test-R1
    Google Codejam
    LeetCode-Count and Say
    LeetCode-Binary Tree Level Order Traversal II
    LeetCode-Binary Tree Level Order Traversal
  • 原文地址:https://www.cnblogs.com/ainidewen/p/9971568.html
Copyright © 2020-2023  润新知