使用SetEntry时,会在redis db中自动生成一个key为“ids:+ objectName”的集合。
例如: typedClient.SetEntry("famyly:用户名:jhon",new Family {FatherName="Jhon",...});
将在redis数据库中自动创建一个键名为“ids:Family”和成员如“2343443”的集合, 每次我使用 SetEntry 更新或修改相同的 key 时,“ids:Family”集都会增加一个新的自动生成的成员。如果我频繁更新 key ,这个集合将会变得非常大。
如何禁用自动生成集?这套对于目前的情况来说似乎没什么用。
谢谢
最佳答案
我遇到了同样的问题 - 我发现我们的数据库包含几十个这样的“ids:XXX”集,每个集包含数千万个项目,这些项目消耗了大量的内存。
解决方案是切换到非类型化客户端。您仍然可以在客户端上使用类型化方法,因此您实际上根本没有放弃任何类型安全或自动序列化。创建客户有多种方法;我们倾向于在 RedisClientsManager
上使用 get-in-get-out Exec
快捷方式。您应该能够根据自己的方式进行调整。
类型化客户端 - 创建“ids”集:
// set:
redis.ExecAs<T>(c => c.SetEntry(key, value));
// get:
T value = redis.ExecAs<T>(c => c.GetValue(key));
无类型客户端 - 未创建“ids”集:
// set:
redis.Exec(c => c.Set(key, value));
// get:
using (var cli = _redis.GetClient())
{
T value = cli.Get<T>(key);
}
关于redis - servicestack redis,使用SetEntry时,会在redis db中自动生成一个key为 "ids:+objectName"的集合,如何禁用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20063297/