C# 利用方法

EnyimMemcached C# による利用方法

1.ライブラリ概要

EnyimMemcached は .NET Framework/.NET 向けのメジャーなMemcached公式.NETクライアントライブラリです。Attila Kiskó によって保守され、NuGetからインストール可能です。テキストプロトコルまたはバイナリプロトコルでMemcachedサーバーへ接続します。

備考:新しいバージョンのEnyimMemcachedはNuGetパッケージ名が Enyim.Caching となります

2.環境準備

  1. ローカルのMemcachedサービスを起動、デフォルトポート:11211
  2. Visual Studio で .NET Framework コンソールプロジェクトを作成
  3. NuGetでパッケージを検索・インストール:EnyimMemcached(パッケージID:Enyim.Caching)

3.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サーバーのアドレスとポート番号

4.利用サンプル(コンソールアプリ)

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

namespace ConsoleApplication1
{
    class Program
    {
        // Memcachedクライアントはシングルトンで再利用(頻繁なインスタンス生成は避ける)
        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)キーが存在しない場合のみ書き込み
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環境で動作を確認してみてください

C# 利用方法

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です