Redis在Web应用程序中的最佳对象生存期策略是什么

时间:2011-05-12 12:20:07

标签: entity-framework-4 benchmarking redis db4o object-lifetime

  • 我计划将Redis(ServiceStack)用作Web应用程序的整个数据库。
  • 我可以在7.4秒内插入76000条记录。
  • 但是使用单一连接(RedisClient对象生命周期是应用程序),
  • 我使用Set generic method not Store(巨大的性能差异)

我曾使用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经验)

2 个答案:

答案 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客户端的文档的最佳位置。