首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC 3内存中数据存储

ASP.NET MVC 3内存中数据存储
EN

Stack Overflow用户
提问于 2011-09-30 16:31:45
回答 3查看 2.8K关注 0票数 2

我有一个项目,为用户提供了当前需要完成的任务列表。任何用户都可以完成任何任务,因此为了确保一次只有一个用户在处理一个任务,我需要能够“锁定”它。我使用SignalR来做这件事,所以一个用户请求一个任务的锁,如果他们成功了(即.如果没有其他人锁定它),那么他们将能够访问他们需要的进一步信息。

我的问题是如何存储锁定任务的列表。最初的计划只是在任务表中添加一个额外的位字段'IsLocked‘,并在用户请求锁和任务解锁时进行更新。然而,我们有大约300个并发用户,一个任务只需要3-4分钟,这意味着在数据库上有大量额外的-和很小的-查询。因此,我们想知道内存中的存储,简单地将任务ids列表存储在“lockedTasks”列表中。

我曾考虑过使用缓存,但不确定最好的方法是什么,也不确定是否有更好的替代方案。如果任何人在这方面有任何经验,那么将非常感谢您的一些建议

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-30 16:44:02

我会完全避免内存,因为IIS并不是很好用,如果你发现你自己因为某种原因需要刷新应用程序池,你的列表就会消失!

也许是MemCache system?如果它不是以上述方式松动的话,但是...

我建议在中间,IO文件是请求数据到数据库的快速,特别是如果它不在同一台机器上(出于安全原因,它永远不应该在同一台机器上),所以...为什么不使用当前著名的NoSQL数据库呢?

是一个文档数据库,它有一个.NET Library,它很容易使用,它没有内存快,但比物理数据库快得多。

通常,NoSQL数据库将托管在App_Data文件夹中,因此访问它将非常快,您可以在那里保存所有锁定任务的task_iduser_id

票数 2
EN

Stack Overflow用户

发布于 2011-09-30 18:15:54

您是否考虑过状态筛选器?

有关更多信息,请查看此链接:

票数 2
EN

Stack Overflow用户

发布于 2011-09-30 16:44:16

很抱歉,如果您的应用程序不能处理每3-4分钟x300个用户的单个查询,那么您正在做一些非常错误的事情。仅仅浏览一个网站通常就会产生比这多几个数量级的查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7607841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档