0

使用 HttpCache 缓冲来自 Web 服务的数据,而不是将相同的数据存储在数据库表中,我可能会遇到什么问题?在服务暂时不可用的假设情况下,如果服务器需要在此期间重新启动,则无法重新填充缓存。因此,出于这个原因,是否可以像使用 SqlServer 会话状态一样持久化缓存?

我读到 HttpCache 是使用 Singleton 模式实现的。这是否意味着在处理来自缓存的对象时应该使用 Mutex?

如果缓存一方面被一个单独的线程进程更新,同时也被另一个线程读取,会发生什么?

谢谢。

4

1 回答 1

2

使用缓存机制遇到的最大问题是陈旧数据。由于数据被缓存,它可以与缓存生命周期一样古老。在事务系统中,这是不可接受的,但对于其他系统,这很好。只需了解数据的年龄。我不知道缓存是否可以持久化,但是如果您正在考虑使用数据库来执行此操作,我建议您首先不要使用缓存,因为部分原因是内存中的快速访问到您的数据。

是的,缓存使用像 Singleton 这样的集中式内存存储。您对 Mutexes 问题的回答是,它取决于您的数据访问模式。大多数人使用缓存来填充数据一次。如果该值超时,缓存会将其条目清空并重新填充。是的,您可以使用 Mutex(或更可能是lock语句)来保护访问,以防止多个客户端竞相一次全部填充缓存。但是 IMO 更多的是性能点而不是数据一致性点,因为客户端很可能会使用相同的数据相互写入(同样,这取决于您的情况)。

于 2010-08-15T13:47:21.830 回答