建设网站对于电商的作用是?,描述photoshop在网站建设中的作用与特点.,西安个人建网站,西宁网站网站建设redis做为缓存#xff0c;mysql的数据如何与redis进行同步呢#xff1f;#xff08;双写一致性#xff09;候选人#xff1a;嗯#xff01;就说我最近做的这个项目#xff0c;里面有xxxx#xff08;根据自己的简历上写#xff09;的功能#xff0c;需要让数据库与red…redis做为缓存mysql的数据如何与redis进行同步呢双写一致性候选人嗯就说我最近做的这个项目里面有xxxx根据自己的简历上写的功能需要让数据库与redis高度保持一致因为要求时效性比较高。我们当时采用的读写锁保证的强一致性。我们使用的是Redisson实现的读写锁。在读的时候添加共享锁可以保证读读不互斥、读写互斥。当我们更新数据的时候添加排他锁。它是读写、读读都互斥这样就能保证在写数据的同时是不会让其他线程读数据的避免了脏数据。这里面需要注意的是读方法和写方法上需要使用同一把锁才行。那这个排他锁是如何保证读写、读读互斥的呢候选人其实排他锁底层使用的也是SETNX它保证了同时只能有一个线程操作锁住的方法。你听说过延时双删吗为什么不用它呢候选人延迟双删如果是写操作我们先把缓存中的数据删除然后更新数据库最后再延时删除缓存中的数据。其中这个延时多久不太好确定。在延时的过程中可能会出现脏数据并不能保证强一致性所以没有采用它。redis做为缓存mysql的数据如何与redis进行同步呢双写一致性候选人嗯就说我最近做的这个项目里面有xxxx根据自己的简历上写的功能。数据同步可以有一定的延时这符合大部分业务需求。我们当时采用的阿里的Canal组件实现数据同步不需要更改业务代码只需部署一个Canal服务。Canal服务把自己伪装成mysql的一个从节点。当mysql数据更新以后Canal会读取binlog数据然后再通过Canal的客户端获取到数据并更新缓存即可。