redis跟ehcache搭配使用怎么解决脏数据的问题

ehcache 作一级缓存,redis作二级缓存,怎么解决脏数据问题
如果服务器A和服务器B都在本地ehcache缓存中缓存了同一个数据X,若服务器A对X修改为了Y,那么修改后的结果Y会缓存在服务器A的ehcache缓存和redis中心缓存中,但是此时服务器B取到的这个数据会是X还是Y呢?服务器A对X数据进行修改后,redis中心缓存不会主动将修改后的值Y推送到各个服务器吗?

3个回答

在缓存到远程redis的同时,缓存一份到本地进程ehcache(此处的ehcache不用做集群,避免组播带来的开销),取缓存的时候会先取本地,没有会向redis请求,这样会减少应用服务器<–>缓存服务器redis之间的网络开销。(为了减少get这几条网络传输,我们会在每个应用服务器上增加本地的ehcache缓存作为二级缓存,即第一次get到的数据存入ehcache,后面output输出即可从本地ehcache中获取,不用再访问redis了,所以就减少了以后get的网络开销。get开销只要一次,后续不需要了,除非本地缓存过期需要再get。)

网上应该有spring+ehcache+redis实例,可以去看下

会。
服务器A对X修改为了Y,直接缓存到远程的redis中心,然后redis通过 publish/subscribe模式发送message通知服务器A,B更新ehcache

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问