2

Redis キャッシュに対して毎秒約 5000 のリクエストを行うシステムがあります。このようなシナリオで ServicStack.Redis クライアントを使用するためのベスト プラクティスを探しています。

ほとんどの呼び出しは、次のように型指定されたクライアントを使用する HashSet 用です。

RedisClient redisInstance = new RedisClient();

var redisTypedClient = redisInstance.As < CustomObject > ();
var data = redisTypedClient.GetValueFromHash(redisTypedClient.GetHash("hset:SetId"), recordId);

最初は「redisInstance」を静的オブジェクトとして使用していましたが、いくつかのリクエストでは問題なく動作しましたが、リクエストの数が増えると、次の例外がスローされ始めました: ServiceStack.Redis.RedisResponseException: Unexpected reply

「redisInstance」をローカル オブジェクトに変更したところ、問題なく動作するようになりました。

それを正しい方法で使用したかどうかについて、私たちはまだ少し困惑しています。私の質問は次のとおりです。PooledRedisClientManager はこれよりも優れたアプローチですか? 他のアプローチはありますか?

各ユーザーに対して非常に頻繁にクエリを実行する、約 10 または 15 の異なる型付きの redis ハッシュ セットがあります。

良いアドバイスを探しています。

4

1 に答える 1

1

マネージャーに応じて試すことができます

https://github.com/ServiceStack/ServiceStack.Redis/blob/master/tests/ServiceStack.Redis.Tests/ServiceStack.Redis/IRedisClientsManager.cs

レポでのこのテストは、PooledRedisClientManager の基本的な使用法を示しています

https://github.com/ServiceStack/ServiceStack.Redis/blob/master/tests/ServiceStack.Redis.Tests/Issues/PooledRedisClientManagerIssues.cs

using (redisClient = (RedisClient)pool.GetClient())
{
     redisClient.Set("test", DateTime.Now);
}
于 2013-03-27T02:56:00.957 に答える