C# 使用

EnyimMemcached C# 使用

一、库介绍

EnyimMemcached 是面向 .NET Framework/.NET 的 Memcached 官方主流 .NET 客户端库,由 Attila Kiskó 维护,通过 NuGet 安装,采用文本协议(Text)或二进制协议连接 Memcached 服务。

注意:新版 EnyimMemcached 有 Enyim.Caching 包(NuGet包名)

二、环境准备

  1. 启动本地 Memcached 服务,默认端口:11211
  2. Visual Studio 创建 .NET Framework 控制台项目
  3. NuGet 搜索安装包:EnyimMemcached(包标识:Enyim.Caching)

三、App.config 完整配置

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
  </startup>

  <!-- 必须先注册配置节点 -->
  <configSections>
    <sectionGroup name="enyim.com">
      <section name="memcached"
               type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
    </sectionGroup>
  </configSections>

  <!-- Memcached 连接配置 -->
  <enyim.com>
    <memcached protocol="Text">
      <!-- Memcached服务地址 -->
      <servers>
        <add address="127.0.0.1" port="11211" />
      </servers>
      <!-- 连接池设置 -->
      <socketPool minPoolSize="10" 
                  maxPoolSize="20" 
                  connectionTimeout="00:00:10"
                  deadTimeout="00:02:00" />
    </memcached>
  </enyim.com>
</configuration>Code language: HTML, XML (xml)

配置说明:

  • protocol="Text":使用memcached文本协议,也可改为Binary二进制协议
  • minPoolSize/maxPoolSize:连接池最小/最大连接数
  • address/port:memcached服务地址与端口

四、使用演示(在控制台中)

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

namespace ConsoleApplication1
{
    class Program
    {
        // 单例Memcached客户端(推荐全局复用,不要频繁new)
        private static readonly MemcachedClient uniqueInstance = new MemcachedClient();

        static void Main(string[] args)
        {
            // StoreMode.Set:存在则覆盖,不存在则新增
            uniqueInstance.Store(StoreMode.Set, "site", "foxdevelop.com");

            // 获取字符串类型缓存
            string value = uniqueInstance.Get<string>("site");
            Console.WriteLine(value);

            Console.Read();
        }
    }
}Code language: JavaScript (javascript)

常用API

方法作用
Store(StoreMode.Set, key, value)写入缓存(覆盖)
Store(StoreMode.Add, key, value)仅key不存在时写入
Get<T>(key)泛型读取缓存
Remove(key)删除缓存
GetCas(key)CAS原子读取(并发场景)

传统 App.config 方式仅适用于 .NET Framework
.NET Core/.NET 6+ 推荐使用代码配置方式,不再依赖xml配置文件。

.NET Core/.NET6 代码式配置(无App.config)

var config = new MemcachedClientConfiguration();
config.Servers.Add(new System.Net.IPEndPoint(System.Net.IPAddress.Loopback, 11211));
config.Protocol = MemcachedProtocol.Text;
var client = new MemcachedClient(config);Code language: JavaScript (javascript)

读者可以自己尝试.NET CORE 和.NET 版本

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注