ServiceStack.CacheAccess.Memcached に問題があります。MemcachedClientCache
. Increment
メソッドが期待どおりに機能しません。
テストでは、通常のコンソール アプリとICacheClient
インターフェイスを使用しています。
メソッドのドキュメントによると:
項目を変更する前に、項目をキャッシュに挿入する必要があります。
アイテムは として挿入する必要がありますSystem.String
。
この操作は でのみ機能するSystem.UInt32values
ため、-1 は常にアイテムが見つからなかったことを示します。
だからここに行きます:
ICacheClient client = new MemcachedClientCache();
string key = "test";
bool result = client.Remove(key);
Console.WriteLine("{0} removed: {1}", key, result);
//The item must be inserted as a System.String.
result = client.Add(key, "1");
Console.WriteLine("added {0}", result);
long v = client.Increment(key, 1);
Console.WriteLine("first increment : {0}", v);
string o = client.Get<string>(key);
Console.WriteLine("first read: {0}", o);
v = client.Increment(key, 1);
Console.WriteLine("second increment: {0}", v);
o = client.Get<string>(key);
Console.WriteLine("second read: {0}", o);
結果 :
- テストが削除されました: True
- 真を追加
- 最初の増分: 0
- 最初の読み取り: 1
- 2 番目の増分: 0
- 2 番目の読み取り: 1
ご覧のとおり、インクリメントは機能しません。
enyim の構成:
<enyim.com>
<memcached protocol="Binary">
<servers>
<!-- make sure you use the same ordering of nodes in every configuration you have -->
<add address="memcached-dev1"
port="11211" />
</servers>
<socketPool minPoolSize="10"
maxPoolSize="100"
connectionTimeout="00:00:10"
deadTimeout="00:02:00" />
</memcached>
</enyim.com>
私は何かを逃しましたか?