让我们以Memcached的.NET客户端为例:
我们知道,如果我们想将一些数据放到缓存服务器上,我们会调用Cache.Add(string key, object data)
之类的API,而memeched客户端将序列化data
,然后将其发送到缓存服务器。如果data
是一个复杂对象(具有大对象图),则序列化过程可能非常慢。因此,我尝试使用2级缓存:分布式缓存和内存缓存。
应用程序代码将始终询问内存缓存中的缓存数据。如果内存高速缓存没有缓存数据,则它将向缓存服务器请求缓存数据。性能可以从内存缓存的使用中获益,因为内存缓存不需要序列化操作,并且更接近应用程序。
然而,存在同步问题。如果一个Web服务器修改数据,它将更新数据库,其内存缓存和分布式缓存。 但其他网络服务器不会收到有关此“更新”事件的通知,因此不会更新其内存缓存。
所以问题是:当一个Web服务器更新数据时,如何通知其他Web服务器(以便他们可以更新其内存缓存)?谢谢!
BTW:我希望以“推送同步”方式同步缓存数据,也就是说,缓存数据将仅更新 当他们改变时。因为在我的应用程序中,只有一些写入时有很多读取。