1

トランザクションの StoreRelatedEntities を達成しようとしています。したがって、ITypedRedisClient またはこれから RedisClient にアクセスする必要があります。

using (var trans1 = redis.As<X>().CreateTransaction())
using (var trans2=  redis.As<Y>().CreateTransaction())
{
   .....
   trans1.Join(trans2); // :) Fantasy
   trans2.Commit(); 
}                

適切な方法ですか?または私はしなければならない

using (var trans1=redis.As<X>().CreateTransaction())
{
  trans.QueueCommand(p => ((RedisClient)((RedisTypedClient<T>)p).NativeClient).AddRangeToList(.....);
}

それとも私はしなければなりませんか?

using (var trans=redis.CreateTransaction())
{
   trans.QueueCommand(p=>p.As<X>()....); // Casting to Typed RedisClient in Command
   trans.QueueCommand(p=>p.As<Y>()....);
}
4

1 に答える 1

1

これは最も簡単なように見えるので、私の選択です:

using (var trans=redis.CreateTransaction())
{
   trans.QueueCommand(p=>p.As<X>()....); // Casting to Typed RedisClient in Command
   trans.QueueCommand(p=>p.As<Y>()....);
}

しかし、正しい/間違った方法はありません。あなたがより快適なことをするだけです。各クライアントは、Redisサーバーとのtcpソケット接続をカプセル化するRedisNativeClientのインスタンスを継承または含みます。異なるクラス間の関係は以下のとおりです。

  • RedisNativeClientはIRedisNativeClientを実装します

  • RedisClientはRedisNativeClientを継承し、 IRedisClientを実装します

  • RedisTypedClientはIRedisTypedClientを実装します

    • RedisClientプロパティを介してアクセス可能なRedisClientのインスタンスが含まれています
于 2012-06-04T05:13:49.140 に答える