Redis 的并发竞争问题是什么?如何解决这个问题?【Java问答】39期-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Redis 的并发竞争问题是什么?如何解决这个问题?【Java问答】39期

2020-06-17 21:12:33 2042 1

面试题

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

面试官心理分析

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

而且 Redis 自己就有天然解决这个问题的 CAS 类的乐观锁方案。

面试题剖析 某个时刻,多个系统实例都去更新某个 key。可以基于 zookeeper 实现分布式锁。每个系统通过 zookeeper 获取分布式锁,确保同一时间,只能有一个系统实例在操作某个 key,别人都不允许读和写。

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

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

往期回顾:

【Java问答学堂】1期 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?

【Java问答学堂】2期 如何保证消息队列的高可用?

【Java问答学堂】3期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?

【Java问答学堂】4期 如何保证消息的可靠性传输?(如何处理消息丢失的问题?)

【Java问答学堂】5期 如何保证消息的顺序性?

【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 的主从复制原理能介绍

为什么使用消息队列?【Java问答学堂】17期

消息队列有什么优点和缺点?【Java问答学堂】18期

Kafka、ActiveMQ、RabbitMQ、RocketMQ的区别?【Java问答学堂】19期

如何保证消息队列的高可用?【Java问答学堂】20期

如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?【Java问答学堂】21期

如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?【Java问答学堂】22期

如何保证消息的顺序性?【Java问答学堂】23期

如何解决消息队列的延时以及过期失效问题?【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问答】35期

Redis 集群模式的工作原理能说一下么?【Java问答】36期

了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?【Java问答】37期

如何保证缓存与数据库的双写一致性?【Java问答】38期

取消 提交回答
全部回答(1)
相关问答

0

回答

java无法远程连接ECS云服务器上安装的Redis

2021-05-04 15:19:11 569浏览量 回答数 0

0

回答

请问使用java对服务器目录进行清除处理性能最优的做法是什么?

2021-11-07 11:14:08 177浏览量 回答数 0

0

回答

请问使用java读取XML属性性能最优的做法是什么?

2021-11-07 11:14:26 159浏览量 回答数 0

0

回答

请问java中向excel格式的文件中追加数据的性能最优的做法是什么?

2021-11-12 17:13:11 146浏览量 回答数 0

1

回答

请问不同的访问修饰符对java应用程序的性能是否有影响呢?

2021-11-07 14:22:00 499浏览量 回答数 1

0

回答

请问java执行数据库查询操作,由于数据库表中的数据量非常大,导致java读取数据性能非常低,如何优

2021-11-12 17:17:44 370浏览量 回答数 0

0

回答

请问在java应用程序中执行数据库表模糊查询时性能非常低,该如何优化呢?

2021-11-12 17:17:42 240浏览量 回答数 0

1

回答

请问java应用程序对数据库表聚合count统计查询时性能非常慢,该如何优化呢?

2021-11-07 14:24:43 460浏览量 回答数 1

1

回答

请问使用synchronized同步方法对java应用程序的性能有哪些影响?

2021-11-07 14:24:42 234浏览量 回答数 1

1

回答

请问java调用数据库存储过程性能较慢,该如何优化呢?

2021-11-07 14:38:11 543浏览量 回答数 1
+关注
文章
问答
问答排行榜
最热
最新
相关电子书
更多
Redis多线程性能优化
立即下载
高并发分布式缓存Redis6.0
立即下载
Redis 的高并发实战:抢购系统
立即下载