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