我正在尝试实现事务性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>()....);
}

最佳答案

这看起来是最简单的,所以我会选择:

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

但是,没有对/错,只是做您更喜欢的事情。每个客户端都继承或包含RedisNativeClient的实例,该实例封装与Redis服务器的tcp套接字连接。不同类之间的关系如下:
  • RedisNativeClient 实现IRedisNativeClient
  • RedisClient 继承 RedisNativeClient ,实现IRedisClient
  • RedisTypedClient 实现IRedisTypedClient
  • 包含 RedisClient 实例,可通过RedisClient属性
  • 访问

    关于redis - 如何在ServiceStack RedisClient中组合多个IRedisTypedTransaction <T>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10876043/

    10-11 01:19