缓存“dictionary-like"ASP中的数据库实体..NET MVC应用

本文关键字:数据库 实体 NET 应用 MVC ASP dictionary-like quot 缓存 | 更新日期: 2023-09-27 17:53:12

我在Azure中托管了asp.net mvc5项目,该项目使用SQL Azure进行数据持久性。我的数据库中的一些表就像字典一样,它们被很多表引用,很少改变。这样的一个例子可以是客户端应用类型:Windows, Windows Phone, Android等。

但是有更多的DB插入操作将数据插入到有外部引用的表中。我想优化,而不是每次我想插入时都对字典表进行SQL查询以获取某些实体的id(这不是过早的优化,Azure可能会根据查询次数改变一些钱)。

实现这一目标的好方法是什么?目前,我有类似dao的实体管理器,静态字段在对象构造或显式调用Refresh()时填充(当字典数据通过我的asp.net mvc应用程序更新时)。每个Manager从自己的表中缓存实体。这就像穷人的贮藏。我想知道有没有更好的方法来做到这一点?是否有任何模式/库/技术来缓存"类字典"数据?

缓存“dictionary-like"ASP中的数据库实体..NET MVC应用

既然你在Azure中托管应用程序并使用SQL Azure,那么为什么不使用Microsoft Azure Redis Cache呢?Redis是一个高级的键值缓存和存储。

https://azure.microsoft.com/en-us/services/cache/

如何使用:https://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/

看看system . web . cache . cache .

它提供了一个很好的缓存框架,并允许各种缓存过期策略。

您可以使用CacheDependency来控制缓存,它可以简单到必须刷新缓存的时间长度,也可以复杂到在底层SQL表更改时自动刷新缓存的SqlCacheDependency(设置更复杂,但更有效,因为它避免了对缓慢变化的表进行不必要的刷新,并避免了当表更改时缓存不同步)。