寻找基于文件的缓存或存储库

本文关键字:缓存 存储 文件 于文件 寻找 | 更新日期: 2023-09-27 18:17:37

以下是我的要求:

  • 要使用的机制或库应该是快速的&高性能

  • 如果已经证明企业准备好了那就太好了

  • 可以提供某种接口或契约来检索数据

  • 与c#、。net 2.0兼容

顺便说一句,也有类似的问题,但没有一个解决了我想要回答的问题。

<<h3>上下文/h3>

我已经为单点登录应用程序开发了自定义会员资格和配置文件提供程序,所有这些都运行良好& &;很好,只是我们希望通过会话在应用程序之间持久化某些用户信息(只有当会话状态存储在SQLServer DB上时才有可能),但我们永远不想这样做。我们还使用UserId,主要使用主键作为CRUD操作的起点。

关于应用程序的更多信息…

所以每次执行CRUD时,我应该做Membership.GetUser().ProviderUserKey,它会命中数据库以检索用户的Id(我可以缓存这个,但在导航到其他应用程序时再次丢失这个,我也得到了许多其他需要相同处理的实体)。

<<h3>我的想法/h3>

我肯定有一些库,经过验证的方法,我可以在这里使用。在这个意义上

  1. 第一次加载来自数据库

  2. 加载的数据存储在虚拟目录之外的全局文件存储库(我想是一个文件)中,或者使用键值对或关系系统存储在某个地方。

  3. 对该文件进行后续请求并检索数据。(如果没有找到键,则运行Sql server命令来检索再次存储在此文件中的值)

问题

关于在。net 2.0上工作的快速、基于文件的、原子的、存储机制或库(类似于memcached但存储在文件上)的建议

寻找基于文件的缓存或存储库

如果您试图优化的时间是用于在内存中查询和组合信息,而不是用于从SQL服务器传输该信息,那么您也可以考虑使用SQL作为缓存机制。只需创建一个带有varbinary(max)列的记录,用于存储当前会话的序列化数据,以及标识该会话的一些唯一ID(如果有多个会话)。你最终可能会得到一个两阶段的缓存——如果这个应用程序已经将信息加载到内存中,你可以使用它;如果没有,可以查询缓存的SQL记录;如果不存在,您可以执行完整的查询来创建它。

编辑:我还建议你考虑优化以后的哲学,如果你还没有。封装提供此数据的对象,并根据需要对其进行优化。

看起来你在谈论一个web应用程序。你是否考虑过新的HTML5 Web Storage API是否适合你的情况?潜在的问题(不适合的原因)有:1 -不能要求客户端使用HTML5;2 -信息主要是在服务器上需要的,而不是在客户端。