EnyimMemcached C# 使用
一、库介绍
EnyimMemcached 是面向 .NET Framework/.NET 的 Memcached 官方主流 .NET 客户端库,由 Attila Kiskó 维护,通过 NuGet 安装,采用文本协议(Text)或二进制协议连接 Memcached 服务。
注意:新版 EnyimMemcached 有 Enyim.Caching 包(NuGet包名)
二、环境准备
- 启动本地 Memcached 服务,默认端口:
11211 - Visual Studio 创建 .NET Framework 控制台项目
- 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 版本