使用HttpCache缓存来自Web服务的数据可能会遇到哪些问题,而不是将相同的数据存储在数据库表中?在假设情况下服务暂时不可用,如果服务器在此期间需要重新启动,则无法重新填充缓存。因此,是否有可能像使用SqlServer会话状态一样保留缓存?
我读过使用Singleton模式实现的HttpCache。这是否意味着我在处理来自缓存的对象时应该使用Mutex?
如果一方面通过单独的线程进程更新缓存,同时又被另一个线程读取,会发生什么?
感谢。
答案 0 :(得分:2)
缓存机制遇到的最大问题是陈旧数据。由于数据是缓存的,因此它可以与缓存生存期一样长。在事务系统中,这是不可接受的,但对于其他系统,这很好。只需了解数据的年龄。我不知道缓存是否可以持久化,但是如果你想去数据库这样做,我建议首先不要使用缓存,因为部分内容是快速的内存访问对你的数据。
是的,缓存使用像Singleton这样的集中式内存存储。关于互斥锁的问题的答案是它取决于您的数据访问模式。大多数人使用缓存来填充数据一次。如果值超时,则缓存将其条目清零并重新填充。是的,您可以使用Mutex(或更可能是lock
语句)来保护访问,以防止多个客户端竞争一次填充缓存。但IMO更多的是性能点而非数据一致性点,因为客户端很可能会使用相同的数据相互写入(同样,这取决于您的情况)。