【发布时间】:2014-05-21 12:28:34
【问题描述】:
我有一个关于如何有效地缓存对象列表的问题。我有一个Trips 的样本表。每个Trip 都有DateFrom 和DateTo。我想缓存Trips 的列表。
我考虑的第一种方法是在 x 分钟内获取Trips 表单数据库和Trips ValueObjects 的缓存列表(我的值对象是指在列表中显示旅行所需的所有数据)。这种方法非常简单,但有一些缺点:
- 处理分页 - 如果我逐页存储它们(例如使用键 TripsP1、TripsP2 等...)。当 GUI 上的页面大小发生变化时,我将不得不使用不同的键(例如键 TripsP1Size1、TripsP1Size2 等...)
- 如何处理排序列表?为每个过滤器组合保留一组具有不同键的Trips?
我考虑的第二种方法是为每个请求点击数据库,但只从数据库中获取Trip.Id。接下来我想从缓存中获取每个Trip ValueObject。创建或修改Trip 后,我会将它们放入缓存中,并以TripId 为键。此外,如果由于某种原因我在缓存中找不到Trip ValueObject,我会将其从数据库中取出并放入缓存中。
哪种方法更好?或者您可以提出一些更有效的方法?
【问题讨论】:
标签: c# sql performance caching memcached