redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗?

面试题

redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗?mysql

面试官心理分析

这个也是线上很是常见的一个问题,就是多客户端同时并发写一个 key,可能原本应该先到的数据后到了,致使数据版本错了;或者是多客户端同时获取一个 key,修改值以后再写回去,只要顺序错了,数据就错了。面试

并且 redis 本身就有自然解决这个问题的 CAS 类的乐观锁方案。redis

面试题剖析

某个时刻,多个系统实例都去更新某个 key。能够基于 zookeeper 实现分布式锁。每一个系统经过 zookeeper 获取分布式锁,确保同一时间,只能有一个系统实例在操做某个 key,别人都不容许读和写。sql

你要写入缓存的数据,都是从 mysql 里查出来的,都得写入 mysql 中,写入 mysql 中的时候必须保存一个时间戳,从 mysql 查出来的时候,时间戳也查出来。缓存

每次要写以前,先判断一下当前这个 value 的时间戳是否比缓存里的 value 的时间戳要新。若是是的话,那么能够写,不然,就不能用旧的数据覆盖新的数据。并发

相关文章
相关标签/搜索