您的位置:首页 > 健康 > 美食 > 企业网页设计_典型的网站案例_seo是什么意思中文翻译_google开户

企业网页设计_典型的网站案例_seo是什么意思中文翻译_google开户

2024/12/22 16:56:46 来源:https://blog.csdn.net/DA_YA_/article/details/143384795  浏览:    关键词:企业网页设计_典型的网站案例_seo是什么意思中文翻译_google开户
企业网页设计_典型的网站案例_seo是什么意思中文翻译_google开户

 基于业务做选择,强一致性和允许延迟再加消息队列

 强一致性:当修改了数据库的数据同时更新缓存的数据,缓存和数据库的数据保持一致

   读操作:缓存命中,直接返回数据,缓存没有命中,查询数据库,写入缓存,设定过期时间

   写操作:延迟双删 :先删除缓存,修改数据库,等待延迟(数据库主从节点,读写分离,需要等待主节点数据传给从节点的数据库,从节点负责被其他线程读取,只有从节点的数据正确的时候再被读取才能够保证新的缓存是正确的),再删除缓存,等其他线程读取从节点数据写新的缓存数据到缓存中,但是延迟时间不好掌握,时间短了依然会有脏数据,时间长了性能太差

   解决办法:

  分布式锁:

            线程1:先加锁,写入数据,删除缓存,释放锁

           线程2:等待锁,加锁,读缓存未命中,读取数据库,更新缓存,解锁

读写锁:redission提供的读写锁

 共享锁:读锁readlock,加锁之后,其他线程可以共享读操作

 排他锁:独占锁writeLock,加锁之后,阻塞其他线程的读写操作

当线程是读操作时加共享锁,其他线程依然可以读取数据

当线程是写操作时加排他锁,其他线程被阻塞,这样可以极大提升分布式锁的性能

优点:强一致

缺点:性能低

允许延迟一致:采用异步通知

最终一致性:可以使用MQ的可靠性来保证数据的最终一致性,修改数据发送消息给MQ,监听消息来更新缓存.

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com