我曾使用Per-Request对象生命周期来实现Entity Framework ObjectContext。
那么Redis(ServiceStack)的Web应用程序(Asp.Net MVC)中对象生命周期的最佳策略是什么..
或者Redis不是100个Sql Server表的成熟项目(各种各样的相互关联)
我完全糊涂了......我想将实体存储在DB4O中(我恐怕'DB4o也是嵌入式Java Db'的口号),Redis中的关系?!
并支持EF4中的Include Concept。
我的整个项目将拥有1.000.000个实体,100,000个关系! (我有3年实体框架1-4经验)
答案 0 :(得分:4)
您不希望为所有内容使用单个redis客户端对象 - 如果您一次加载多个页面,则会产生非常有趣的结果。如果创建连接的开销是一个问题,您可以使用某种连接池,但可能没有必要。
存储和相关方法是ServiceStack的一部分,旨在通过存储类型信息和实际数据来简化某些简单方案 - 如果这不是您需要的,请不要使用它。
Redis可以非常好地支持该大小的数据集,但请记住它绝不是关系型数据库 - 所有内容的建模都与SQL中习惯的完全不同,而像EF这样的抽象层也无济于事。您需要真正了解您的数据,您需要执行的操作,以及所需任务如何映射到redis可以快速执行的低级操作。
答案 1 :(得分:3)
ServiceStack Redis客户端包括2个线程安全连接管理器:
PooledRedisClientManager - 是否汇集了RedisClient的连接池实现。远程访问redis-server时建议使用。
BasicRedisClientManager - 每次返回一个新的RedisClient实例,如果redis-server与ASP.NET Web应用程序位于同一服务器上,建议使用该实例。
注意Redis不是RDBMS,它是一个数据结构服务器,提供对服务器端键值,集合,排序集,哈希和列表的原子访问。您需要使用自定义索引维护自己的关系,您可以在source code演示应用程序的RedisStackOverflow中看到此示例。
您还应该查看Designing a simple blog application with Redis。
否则ServiceStack C# RedisClient wiki是有关使用C#Redis客户端的文档的最佳位置。