- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在研究 Redis 和替代方案,因为我们将转向编写分布式应用程序。我的想法是,我们需要像 Redis 这样的分布式缓存来确保我们在任何地方都有一致的缓存。我的资深同事不同意并说我们应该只使用选择性的 InProc 缓存,其中一些数据在请求时缓存在机器的内存中。他还表示,Redis 会比缓存数据 InProc 慢很多。他同意我们应该将 session 状态存储在分布式缓存中,因为这需要保持一致。
保存缓存的最佳位置是什么? InProc 还是分布式?
最佳答案
使用进程内或进程外缓存完全取决于应用程序。
Inproc 缓存将数据存储在当前应用程序的进程内存中,这使得缓存数据访问速度非常快,但缓存数据只能由本地应用程序访问。如果您只有一个应用程序服务器,或者如果每个应用程序服务器都使用不同的数据集,那么这很有效。即使这样,如果应用服务器宕机,缓存的数据也会丢失。
但是,如果您的多个应用服务器使用同一组数据,Inproc 缓存不是最佳解决方案。因为在那种情况下,每个应用程序都将加载相同的数据集,从而限制了使用缓存的实用性。此外,对于 session 状态缓存,它将留给您使用粘性 session 的唯一选择,这反过来又会限制负载平衡。
另一方面,分布式缓存会增加从另一台服务器获取数据的额外网络成本,但它会给您带来与所有其他应用程序共享相同数据集的优势。不仅如此,即使应用程序服务器出现故障,数据仍会保留在缓存中。
您还可以使用 Inproc 和 OutProc 缓存的混合解决方案,例如 NCache 提供的解决方案。 ,您可以在其中拥有分布式集群缓存(包含所有缓存数据)和本地进程内缓存(包含该应用程序服务器经常使用的数据子集)。这将为您提供两种缓存技术的优势。
由于您正在重写您的应用程序,我建议您尝试 NCache .它提供进程内和进程外解决方案。您只需编写一次应用程序,使用两种解决方案对其进行测试,然后选择最适合您的那个。
关于ASP.NET InProc 缓存与分布式缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25621150/
我们最近从使用 InProc 改为使用 StateServer 来存储 Session 信息。 我想知道,现在是否可以在不丢失 session 信息的情况下更新网站上的配置文件。当我们使用 InPro
我正在研究 Redis 和替代方案,因为我们将转向编写分布式应用程序。我的想法是,我们需要像 Redis 这样的分布式缓存来确保我们在任何地方都有一致的缓存。我的资深同事不同意并说我们应该只使用选择性
任何人都知道为什么服务器 InProc session 状态不起作用?是否有手动重置或检查方法? 谢谢 session 模式为 InProc,超时为 25 分钟。 这个时候我不确定是Session对象
我已将 Web 角色设置为使用共置缓存。问题是在开发过程中我们不想一直运行模拟器(因为它非常麻烦)。 由于 Azure session 状态提供程序的原因,正常运行我们的 Web 应用程序(未在 We
为什么在 Visual Studio 2012 中创建 ASP.NET 4.5 Web 窗体项目时,web.config 中默认包含以下内容: ... ... ..
我正在使用 asp .NET MVC 应用程序,并且我已配置 但看起来 session 仍然只有 20 分钟而不是 90 分钟有效,为什么? 我怎样才能使它有效而不是 20(我想是默认值) 我检查了
我大约一周前才注意到这一点。我正在存储有关用户正在玩的当前谜题的数据 (www.wikipediamaze.com),如下所示: HttpContext.Current.Session.Add("pu
我正在使用 asp .NET MVC 应用程序,并且我已配置 但看起来 session 仍然只有 20 分钟而不是 90 分钟有效,为什么? 我怎样才能使它有效而不是 20(我想是默认值) 我检查了
我正在为我的 mvc 应用程序使用 state service session provider,如果我不序列化我要存储在 session 中的类型,应用程序会抛出一个错误,该类必须被标记为可序列化。
我正在使用 inproc 和 PAIR 来实现线程间通信,并试图解决由于轮询引起的延迟问题。如果我错了请纠正我:轮询是不可避免的,因为普通的 recv() 调用通常会阻塞并且不能采取特定的超时。 在我
我在 VC++ 6.0 中有一个项目,其中有一个 exe 和一个 InProc COM Dll。我希望能够在 InProc COM DLL 的某处放置断点,但 VC++ 不允许我设置断点。 我有这个
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我想在一个进程中将一个巨大的对象(例如 Bitmap)从一个 Activity 传递到另一个 Activity 。如果我将它作为Parcelable放入Bundle中,Android真的会序列化对象还
我最近发现,当您将页面设置为 session readonly 并且您正在使用 inproc(内存中) session 存储时,该 session 仍然可以在该页面上写入并且不是真正的只读。进程外 s
我正在阅读 ASP.NET 4 Unleashed 并且我想到了这句话。 “当 session 状态存储在进程内时,它存储在特定的 Web 服务器上。换句话说,您不能在 Web 场中使用进程内 ses
我了解什么是 InProc 变量,但它们如何使 session 更快?是因为他们的访问时间较少吗? 最佳答案 检查此主题和 adt 给出的答案。 Which one is better, InProc
我对 session 状态模式有基本的了解,我已经经历了this article在 MSDN 上,但无法理解何时使用 InProc、StateServer 和 SqlServer session 模式
我已经设置了两个小脚本来模拟 pyzmq 的发布和订阅过程。但是,我无法使用 inproc 传输将消息发送到我的订户客户端。我可以很好地使用 tcp://127.0.0.1:8080,只是没有 inp
在我的一个应用程序中,我使用 DEALER/ROUTER inproc 连接。我将 DEALER 套接字上的 linger 选项设置为 0,以便一旦 ROUTER 套接字关闭,在 DEALER 套接字
首先介绍一下背景。我目前有一个由 Windows Azure 托管的网站,具有多个实例,并且 AppFabric 作为我唯一的缓存提供程序。 一切都很顺利,直到今天早上我的流量激增。在实例过载并停止响
我是一名优秀的程序员,十分优秀!