5
  • 我将计划使用 Redis (ServiceStack) 作为 Web 应用程序的整个数据库。
  • 我可以在 7.4 秒内插入 76000 条记录。
  • 但是使用单连接(RedisClient object-life-time is Application),
  • 我使用 Set generic method not Store (巨大的性能差异)

我已经为实体框架 ObjectContext 使用了 Per-Request object-life-time。

那么对于 Redis (ServiceStack) 的 Web 应用程序 (Asp.Net MVC) 中的对象生命周期的最佳策略是什么?

或者 Redis 不是 100 个 Sql Server 表的成熟项目(各种相互关联)

我完全糊涂了..我正在考虑将实体存储在 DB4O 中(我也害怕“DB4o 也是 Embedded-Java Db”的口号),Redis 中的关系?!

并支持在 EF4 中包含概念。

我的整个项目将有 1.000.000 个实体,100.000.000 个关系!(我有 3 年实体框架 1-4 经验)

4

2 回答 2

4

您不想对所有事情都使用单个 redis 客户端对象 - 如果您一次加载多个页面,这会产生非常有趣的结果。如果创建连接的开销是一个问题,您可以使用某种连接池,但这可能不是必需的。

Store 和相关方法是 ServiceStack 的一部分,旨在通过存储类型信息和实际数据来简化某些简单的场景 - 如果这不是您需要的,请不要使用它。

Redis 可以很好地支持这种大小的数据集,但请记住,它绝不是关系数据库 - 一切都将与您在 SQL 中习惯的完全不同的模型,而像 EF 这样的抽象层也无济于事。你需要真正了解你的数据,你需要用它做什么,以及所需的任务如何映射到 redis 可以快速完成的低级操作。

于 2011-05-12T13:00:43.037 回答
3

ServiceStack Redis 客户端包括 2 个线程安全的连接管理器:

  • PooledRedisClientManager - 是池化 RedisClient 的连接池实现。远程访问 redis-server 时推荐。

  • BasicRedisClientManager - 每次返回一个新的 RedisClient 实例,如果 redis-server 与您的 ASP.NET Web 应用程序位于同一台服务器上,建议使用该实例。

注意 Redis 不是 RDBMS,它是一个数据结构服务器,提供对服务器端键值、集合、排序集、哈希和列表的原子访问。您需要使用自定义索引来维护自己的关系,您可以在RedisStackOverflow演示应用程序的源代码中看到一个示例。

您还应该查看使用 Redis 设计一个简单的博客应用程序

否则,ServiceStack C# RedisClient wiki是有关如何使用 C# Redis Client 的文档的最佳位置。

于 2011-05-19T15:39:49.450 回答