我们目前有一个应用程序框架,我们可以在业务层(使用.NET缓存)自动缓存实体和实体集合。因此,GetWidget(int id)方法在访问数据库之前使用密钥GetWidget_Id_ {0}检查缓存,GetWidgetsByStatusId(int statusId)方法使用GetWidgets_Collections_ByStatusId_ {0}检查缓存。如果对象不在缓存中,则从数据库中检索它们并将其添加到缓存中。实体和集合的缓存策略
这种方法对于读取场景来说显然很快,而且我们可以快速实现,但需要在对实体执行CRUD操作时清除大量缓存键。很明显,随着其他方法的增加,这会影响性能和缓存的好处。
我对处理集合缓存的替代方法感兴趣。我知道NHibernate缓存集合中的标识符列表,而不是实际的实体。这是其他人尝试过的方法吗?有什么优点和缺点?
特别是我正在寻找优化性能的选项,并且可以通过样板生成的代码自动实现(我们有自己的代码生成工具)。我知道有些人会说缓存需要每次手动完成以满足特定情况的需求,但我正在寻找能够让我们自动完成大部分任务的方法。
意见问题应该在Programmers.StackExchange上:http://programmers.stackexchange.com – CAbbott
@CAbbott我认为这个问题符合常见问题解答中的问题 - 它涉及到“特定的编程问题”并且是可以回答的。 –
我想说,你不是在问一个“实际的编程问题”,即“我写了* X *并且它不工作”,而是你正在征求*意见*以引发讨论。 – CAbbott