我有一个有点复杂的权限系统,总共使用六个数据库表,为了加快速度,我想将这些表缓存在内存中,而不是每次加载页面时都必须访问数据库。
但是,当添加新用户或更改权限时,我需要更新此缓存。我不确定如何将它放入内存缓存中,以及如何安全地更新它而不会在更新的同时访问它而不会引起问题
有没有人可以举例说明如何做这样的事情,或者可以为我指明正确的研究方向?
最佳答案
在不了解更多关于应用程序结构的情况下,有很多可能的选择。一个这样的选择可能是抽象存储库接口(interface)背后的数据访问并处理该存储库中的内存缓存。像私有(private)一样简单的东西 IEnumerable<T>
在存储库对象上。
例如,假设您有一个 User
对象,其中包含有关用户的信息(名称、权限等)。你会有一个 UserRepository
有一些基本的获取/保存方法。在该存储库中,您可以维护一个私有(private)静态 HashSet<User>
其中包含 User
已经从数据库中检索到的对象。
当你获取 User
时从存储库中,它首先检查 HashSet
对于要返回的对象,如果它没有找到它,它会从数据库中获取它,将它添加到 HashSet
,然后返回它。当你保存 User
它同时更新了 HashSet
和数据库。
同样,在不了解代码库和整体设计细节的情况下,很难给出更具体的答案。不过,这应该是一个足够通用的解决方案,适用于任何应用程序。
关于c# - 如何将数据库数据缓存到内存中以供 MVC 应用程序使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17305578/