IRedisClient.As<T>() 在幕后做了什么?
What does IRedisClient.As<T>() do behind the scenes?
我目前通过以下方式使用 c# ServiceStack RedisClient
using (var cache = new BasicRedisClientManager(readWriteHosts).ClientFactory.GetClient())
{
var r = cache.As<Foo>();
var myItem = r.GetById(123);
}
我想知道幕后发生了什么? Redis 如何知道哪种类型与哪个键相关?它不能检查每种类型的匹配项,那样太慢了。当我设置对象时,我自己将其序列化并将其添加为字符串 - 所以它也无法从那里知道。
它工作得非常好,我什至尝试更改类型的属性和命名空间以查看发生了什么,它只是处理它。有谁知道如何?
如有疑问,您可以 read the source code,即它实际上只是返回类型化的通用 RedisClient:
public IRedisTypedClient<T> As<T>()
{
return new RedisTypedClient<T>(this);
}
而 RedisTypedClient shows exactly what it does, this existing answer explains roughly how it works.
的源代码
我目前通过以下方式使用 c# ServiceStack RedisClient
using (var cache = new BasicRedisClientManager(readWriteHosts).ClientFactory.GetClient())
{
var r = cache.As<Foo>();
var myItem = r.GetById(123);
}
我想知道幕后发生了什么? Redis 如何知道哪种类型与哪个键相关?它不能检查每种类型的匹配项,那样太慢了。当我设置对象时,我自己将其序列化并将其添加为字符串 - 所以它也无法从那里知道。
它工作得非常好,我什至尝试更改类型的属性和命名空间以查看发生了什么,它只是处理它。有谁知道如何?
如有疑问,您可以 read the source code,即它实际上只是返回类型化的通用 RedisClient:
public IRedisTypedClient<T> As<T>()
{
return new RedisTypedClient<T>(this);
}
而 RedisTypedClient shows exactly what it does, this existing answer explains roughly how it works.
的源代码