我们使用前面记录的redisson来加锁
![](/i/l/?n=23&i=blog/2506674/202302/2506674-20230201223853594-963653443.png)
但是此时还存在问题,就是缓存的一致性问题
1、双写模式:修改数据后,将缓存中数据一并修改
![](/i/l/?n=23&i=blog/2506674/202302/2506674-20230201224125793-1101739738.png)
2、失效模式:修改数据后,将缓存中的数据直接删除,另一个线程查缓存没数据,就会从数据库获得最新数据
![](/i/l/?n=23&i=blog/2506674/202302/2506674-20230201224149804-480399100.png)
3、解决方案
![](/i/l/?n=23&i=blog/2506674/202302/2506674-20230201225729386-463646212.png)
4、Canal简介
![](/i/l/?n=23&i=blog/2506674/202302/2506674-20230201225748892-1761936085.png)
经常写会对性能有影响,但是经常读影响很小。因为读写者模式下多个用户可以同时读,相当于无锁状态