面试题
Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?
面试官心理分析
这个也是线上非常常见的一个问题,就是多客户端同时并发写一个 key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回去,只要顺序错了,数据就错了。
而且 Redis 自己就有天然解决这个问题的 CAS 类的乐观锁方案。
面试题剖析 某个时刻,多个系统实例都去更新某个 key。可以基于 zookeeper 实现分布式锁。每个系统通过 zookeeper 获取分布式锁,确保同一时间,只能有一个系统实例在操作某个 key,别人都不允许读和写。
你要写入缓存的数据,都是从 mysql 里查出来的,都得写入 mysql 中,写入 mysql 中的时候必须保存一个时间戳,从 mysql 查出来的时候,时间戳也查出来。
每次要写之前,先判断一下当前这个 value 的时间戳是否比缓存里的 value 的时间戳要新。如果是的话,那么可以写,否则,就不能用旧的数据覆盖新的数据。
往期回顾:
【Java问答学堂】1期 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?
【Java问答学堂】3期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?
【Java问答学堂】4期 如何保证消息的可靠性传输?(如何处理消息丢失的问题?)
【Java问答学堂】6期 如何解决消息队列的延时以及过期失效问题?
【Java问答学堂】7期 如果让你写一个消息队列,该如何进行架构设计?
【Java问答学堂】8期 es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)?
【Java问答学堂】9期 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?
【Java问答学堂】10期 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
【Java问答学堂】11期 es 生产集群的部署架构是什么?每个索引的数据量大概有多少?
【Java问答学堂】12期 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?
【Java问答学堂】13期 redis 和 memcached 有什么区别?
【Java问答学堂】14期 redis 都有哪些数据类型?分别在哪些场景下使用比较合适?
【Java问答学堂】15期redis 的过期策略都有哪些?内存淘汰机制都有哪些?
【Java问答学堂】16期如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍
Kafka、ActiveMQ、RabbitMQ、RocketMQ的区别?【Java问答学堂】19期
如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?【Java问答学堂】21期
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?【Java问答学堂】22期
如何解决消息队列的延时以及过期失效问题?【Java问答学堂】24期
如果让你写一个消息队列,该如何进行架构设计?【Java问答学堂】25期
ES 的分布式架构原理能说一下么(ES 是如何实现分布式的啊)?【Java问答学堂】26期
ES 写入数据的工作原理是什么啊?ES 查询数据的工作原理是什么啊?【Java问答学堂】27期
ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?【Java问答学堂】28期
ES 生产集群的部署架构是什么?每个索引的数据量大概有多少?【Java问答学堂】29期
项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?【Java问答学堂】30期
Redis 和 Memcached 的区别?Redis 的线程模型是什么?【Java问答学堂】31期
Redis 都有哪些数据类型?分别在哪些场景下使用比较合适?【Java问答学堂】32期
Redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?【Java问答】33期
如何保证 redis 的高并发和高可用?【Java问答】34期
Redis 集群模式的工作原理能说一下么?【Java问答】36期
面试题
Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?
面试官心理分析
这个也是线上非常常见的一个问题,就是多客户端同时并发写一个 key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回去,只要顺序错了,数据就错了。
而且 Redis 自己就有天然解决这个问题的 CAS 类的乐观锁方案。
面试题剖析 某个时刻,多个系统实例都去更新某个 key。可以基于 zookeeper 实现分布式锁。每个系统通过 zookeeper 获取分布式锁,确保同一时间,只能有一个系统实例在操作某个 key,别人都不允许读和写。
你要写入缓存的数据,都是从 mysql 里查出来的,都得写入 mysql 中,写入 mysql 中的时候必须保存一个时间戳,从 mysql 查出来的时候,时间戳也查出来。
每次要写之前,先判断一下当前这个 value 的时间戳是否比缓存里的 value 的时间戳要新。如果是的话,那么可以写,否则,就不能用旧的数据覆盖新的数据。
往期回顾:
【Java问答学堂】1期 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?
【Java问答学堂】3期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?
【Java问答学堂】4期 如何保证消息的可靠性传输?(如何处理消息丢失的问题?)
【Java问答学堂】6期 如何解决消息队列的延时以及过期失效问题?
【Java问答学堂】7期 如果让你写一个消息队列,该如何进行架构设计?
【Java问答学堂】8期 es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)?
【Java问答学堂】9期 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?
【Java问答学堂】10期 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
【Java问答学堂】11期 es 生产集群的部署架构是什么?每个索引的数据量大概有多少?
【Java问答学堂】12期 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?
【Java问答学堂】13期 redis 和 memcached 有什么区别?
【Java问答学堂】14期 redis 都有哪些数据类型?分别在哪些场景下使用比较合适?
【Java问答学堂】15期redis 的过期策略都有哪些?内存淘汰机制都有哪些?
【Java问答学堂】16期如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍
Kafka、ActiveMQ、RabbitMQ、RocketMQ的区别?【Java问答学堂】19期
如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?【Java问答学堂】21期
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?【Java问答学堂】22期
如何解决消息队列的延时以及过期失效问题?【Java问答学堂】24期
如果让你写一个消息队列,该如何进行架构设计?【Java问答学堂】25期
ES 的分布式架构原理能说一下么(ES 是如何实现分布式的啊)?【Java问答学堂】26期
ES 写入数据的工作原理是什么啊?ES 查询数据的工作原理是什么啊?【Java问答学堂】27期
ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?【Java问答学堂】28期
ES 生产集群的部署架构是什么?每个索引的数据量大概有多少?【Java问答学堂】29期
项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?【Java问答学堂】30期
Redis 和 Memcached 的区别?Redis 的线程模型是什么?【Java问答学堂】31期
Redis 都有哪些数据类型?分别在哪些场景下使用比较合适?【Java问答学堂】32期
Redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?【Java问答】33期
如何保证 redis 的高并发和高可用?【Java问答】34期
Redis 集群模式的工作原理能说一下么?【Java问答】36期
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。