ServiceStack.Net: IRedisNativeClient.Eval 和 EvalCommand 的区别

ServiceStack.Net: Difference between IRedisNativeClient.Eval and EvalCommand

我是 ServiceStack.Net 框架的新手,我想了解以下方法之间的区别:

public byte[][] Eval(string luaBody, int numberKeysInArgs, params byte[][] keys)
public RedisData EvalCommand(string luaBody, int numberKeysInArgs, params byte[][] keys)

根据源代码,主要区别在于第一个调用使用 SendExpectMultiData Request,第二个命令发送 RawCommand。

那么什么时候应该使用第一种方法而不是第二种方法呢?这些方法的推荐用法是什么?

IRedisNativeClient API 是低级别的,通常 1:1 与它调用的原始 Redis 服务器 API 相匹配。 IRedisClient 上的 API 更高级且更易于使用,例如有 RedisDataExtensions 可以很容易地转换为文本并使用 .GetResult<T>() 方法反序列化为复杂类型。