我正在尝试实现事务性 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 实例属性(property)
关于redis - 如何在 ServiceStack RedisClient 中组合多个 IRedisTypedTransaction<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10876043/