• Memcached在windows下的基本使用


    1、Memcached是什么

      Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

    2、Memcached集群原理

      Memcache是通过客户端驱动实现集群。Redis、MongoDb是通过服务器端实现集群初始化驱动的时候开业给定一个集合:memcache服务器所在的机器ip和端口。

      Memcache 在添加一个键值对时,

      第一步:把key做一个哈希运算

      第二步:根据哈希值对服务器个数取余。根据取余结果,把数据放到对应机器上去

      Memcache 在获取一个键值对时,

      第一步:根据key做一个哈希运算

      第二步:根据哈希值对服务器个数取余。根据取余结果,从相应服务器上取数据

    3、Memcached的优缺点

      (1)       不能作为持久化存储

      (2)       存储数据有限制:最大1M

      (3)       Memcache存储数据只能key-value

      (4)       集群数据没有复制和同步机制

      (5)       内存回收不及时。LRU:未使用内存》过期内存》最近最少使用内存,是一个惰性删除

    4、Memcached的安装与卸载

      推荐这篇文章,比较详细的介绍了安装与卸载

      http://blog.csdn.net/zhaotengfei36520/article/details/41315329

      安装成功运行后,可以在服务那里看到Memcached服务正在运行

    5、C#中Memcached的使用

      通过Nuget安装 EnyimMemcached 

      新建一个MemcacheHelper类

      

    public class MemcacheHelper
        {
            public MemcachedClient mc = MemCached.getInstance();
            /// <summary>
            /// 添加缓存
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <returns></returns>
            public bool AddCache(string key, object value)
            {
                return mc.Store(StoreMode.Add, key, value);
            }
            /// <summary>
            /// 添加缓存,并指定过期时间
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <param name="exp"></param>
            /// <returns></returns>
            public bool AddCache(string key, object value, DateTime exp)
            {
                return mc.Store(Enyim.Caching.Memcached.StoreMode.Add, key, value, exp);
            }
            /// <summary>
            /// 修改缓存
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <returns></returns>
            public bool SetCache(string key, object value)
            {
                return mc.Store(Enyim.Caching.Memcached.StoreMode.Set, key, value);
            }
            /// <summary>
            /// 修改缓存并指定过期时间
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <param name="exp"></param>
            /// <returns></returns>
            public bool SetCache(string key, object value, DateTime exp)
            {
                return mc.Store(Enyim.Caching.Memcached.StoreMode.Set, key, value, exp);
            }
            /// <summary>
            /// 通过键获取缓存
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public object GetCache(string key)
            {
                return mc.Get(key);
            }
            public T GetCache<T>(string key)
            {
                return mc.Get<T>(key);
            }
            /// <summary>
            /// 通过键删除缓存
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public bool DeleteCache(string key)
            {
                return mc.Remove(key);
            }
        }

      通过单例模式获取Memcached客户端对象

    public sealed class MemCached
        {
            private static MemcachedClient MemClient { get; set; }
            static readonly object padlock = new object();
            //线程安全的单例模式  
            public static MemcachedClient getInstance()
            {
                if (MemClient == null)
                {
                    lock (padlock)
                    {
                        if (MemClient == null)
                        {
                            MemClientInit();
                        }
                    }
                }
                return MemClient;
            }
    
            private static void MemClientInit()
            {
                string serverList = "127.0.0.1:11211";
                //初始化缓存  
                MemcachedClientConfiguration memConfig = new MemcachedClientConfiguration();
                memConfig.AddServer(serverList);
                memConfig.Protocol = MemcachedProtocol.Binary;
                //下面请根据实例的最大连接数进行设置  
                memConfig.SocketPool.MinPoolSize = 5;
                memConfig.SocketPool.MaxPoolSize = 200;
                MemClient = new MemcachedClient(memConfig);            
            }
        }

       最后测试代码

        

      

  • 相关阅读:
    箭头函数(Arrow Functions)
    MySQL 下载与安装
    IDEA设置Ctrl+滚轮调整字体大小
    使用OpenLayers 勾画地图
    为什么总是听到前辈说不要过量使用全局变量
    CSS揭秘—多重边框(二)
    一个需求认识CSS3 的transform-origin属性
    defer和async的区别
    input和extarea在ios safari中的内阴影解决方法
    document.getElementById 和 document.getElementsByClassName获取DOM元素的区别
  • 原文地址:https://www.cnblogs.com/lentoo/p/7060890.html
Copyright © 2020-2023  润新知