技术思绪摘录旅行
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。

1、Memcached读作“麦目卡吃的”。


2、Memcached因为简单,所以快,和redis相比,他的功能并没有那么多,也不支持持久化,最长缓存30天。对外端口是11211


3、windows下载安装。

    cmd进入memcache文件目录

    安装:memcached.exe -d install

    启动:memcached.exe -d start

    停止:memcached.exe -d stop

    卸载:memcached.exe -d uninstall

    ps,因为win环境的memcache是以服务形式安装的,因此测试卸载时候需先执行停止然后才能卸载


4、搭建一个.NET的项目,引用EnyimMemcached 2.16.0


image.png


5、配置一下config


<configuration>
  <configSections>
    <sectionGroup name="enyim.com">
      <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
    </sectionGroup>
  </configSections>
  <enyim.com>
    <memcached protocol="Text">
      <servers>
        <add address="127.0.0.1" port="11211" />
        <add address="192.168.20.35" port="11211" />
      </servers>
      <socketPool minPoolSize="10" maxPoolSize="20" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
    </memcached>
  </enyim.com>
</configuration>


6、编写一个MemCachedHelper.cs


using System;
using Enyim.Caching;
using Enyim.Caching.Memcached;

namespace ConsoleApp1.comm
{
    /// <summary>
    /// Class MemCachedHelper.
    /// </summary>
    public class MemCachedHelper
    {
        /// <summary>
        /// The unique instance
        /// </summary>
        private static readonly MemcachedClient UniqueInstance = new MemcachedClient();

        /// <summary>
        /// 添加缓存
        /// </summary>
        /// <param name="key">缓存key</param>
        /// <param name="value">The value.</param>
        /// <param name="timeout">超时时间,超30天则无效,可能不会报错,只是读不到</param>
        /// <returns>如果不存在返回true,如存在返回false</returns>
        public static bool Add(string key, object value, TimeSpan timeout)
        {
            return UniqueInstance.Store(StoreMode.Add, key, value, timeout);
        }

        /// <summary>
        /// 设置缓存
        /// </summary>
        /// <param name="key">缓存key</param>
        /// <param name="value">The value.</param>
        /// <param name="timeout">过期时间,超30天则无效</param>
        /// <returns>如果不存在则加入,如果存在则更新,操作成功都会返回true</returns>
        public static bool Set(string key, object value, TimeSpan timeout)
        {
            return UniqueInstance.Store(StoreMode.Set, key, value, timeout);
        }

        /// <summary>
        /// 获取缓存
        /// </summary>
        /// <param name="key">缓存key</param>
        public static T Get<T>(string key)
        {
            return UniqueInstance.Get<T>(key);
        }

        /// <summary>
        /// 获取缓存
        /// </summary>
        /// <param name="key">缓存key</param>
        public static object Get(string key)
        {
            return UniqueInstance.Get(key);
        }

        /// <summary>
        /// 删除缓存
        /// </summary>
        /// <param name="key">缓存key</param>
        public static bool Remove(string key)
        {
            return UniqueInstance.Remove(key);
        }
    }
}


7、调用示例


        static void Main(string[] args)
        {
            bool ret = MemCachedHelper.Set("test1", "1111", new TimeSpan(0, 0, 300));
            bool ret1 = MemCachedHelper.Set("test1", "11112", new TimeSpan(0, 0, 300));
            var val = MemCachedHelper.Get("test1");
            Console.WriteLine(val);
            Console.ReadKey();
        }


CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫