当前位置:  开发笔记 > 后端 > 正文

在内存中存储数据:会话与缓存与静态

如何解决《在内存中存储数据:会话与缓存与静态》经验,为你挑选了0个好方法。

有点背景故事:我正在开发一个Web应用程序,它需要相当多的时间来准备/处理数据,然后再将其提供给用户进行编辑/操作.数据请求任务完成约15/20秒,处理几秒钟.在那里,用户可以动态操纵vaules.任何值的操作都需要完全重新处理数据.

更新:为了避免混淆,我只进行一次数据调用(15秒命中),然后想要将结果保存在内存中,这样我就不必再次调用它,直到用户100%完成它为止.所以,第一次拉动将需要一段时间,但是,使用Ajax,我将打击内存中的数据以不断更新并将响应时间保持在大约2秒左右(我希望).

为了提高效率,我将初始数据移动到内存中并使用Ajax调用回服务器,这样我就可以减少处理时间来处理用户更新时发生的重新计算.

这是我的问题,考虑到性能,存储此数据的最佳方式是什么,假设在任何给定时刻只有1个用户将使用此数据.

此外,用户可能会在此过程中工作几个小时.当用户使用数据工作时,如果会话以某种方式中断,我将需要某种故障保护来保存用户的当前数据(在数据库或序列化二进制文件中).换句话说,我需要一个具有适当钩子的解决方案,以允许我在用户断开连接/分心太久的情况下转储内存对象的数据.

到目前为止,这是我的想法:

会话状态 - 优点:锁定到一个用户.Session End事件是否符合我的故障安全要求.缺点:我当前选项的最慢性能.Session End事件有时很棘手,无法确保正常触发.

缓存 - 优点:良好的性能.可以访问依赖项,这可能是后来的奖励,但在当前范围内并不真正有用.缺点:除了基于时间间隔的写入之外,没有简单的故障保护步骤.全球范围 - 必须确保用户不会相互冲突.

静态 - 优点:最好的Perf.易于维护,因为我可以直接利用我当前的类结构.缺点:除了基于时间间隔的写入之外,没有简单的故障保护步骤.全球范围 - 必须确保用户不会相互冲突.

有没有人对我应该选择的选项有任何建议/意见?

谢谢!

更新:忘记提及,我使用VB.Net,Asp.Net和Sql Server 2005来执行此任务.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有