Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?
2023-09-27 14:23:02 时间
问题
Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?
分析
这个也是线上非常常见的一个问题,就是多客户端同时并发写一个 key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回去,只要顺序错了,数据就错了。
而且 Redis 自己就有天然解决这个问题的 CAS 类的乐观锁方案。
某个时刻,多个系统实例都去更新某个 key。可以基于 zookeeper 实现分布式锁。每个系统通过 zookeeper 获取分布式锁,确保同一时间,只能有一个系统实例在操作某个 key,别人都不允许读和写。
你要写入缓存的数据,都是从 mysql 里查出来的,都得写入 mysql 中,写入 mysql 中的时候必须保存一个时间戳,从 mysql 查出来的时候,时间戳也查出来。
每次要写之前,先判断一下当前这个 value 的时间戳是否比缓存里的 value 的时间戳要新。如果是的话,那么可以写,否则,就不能用旧的数据覆盖新的数据。
这种锁称作乐观锁,大多数情况下, 不同的客户端会访问不同键, 碰撞情况一般很少, 所以通常并不需要重试。
相关文章
- Redis快速入门
- Redis【1】-Redis简介以及安装
- 华为云企业级Redis评测第一期:稳定性与扩容表现
- Redis在Linux环境下安装的常见错误
- Redis 是并发安全的吗?你确定?
- Nginx+Redis+Ehcache:大型高并发与高可用的3层缓存架构总结
- 如何保证 redis 的高并发和高可用、redis 的主从复制原理、redis 的哨兵原理
- Redis 的并发竞争问题
- Redis IO多线程的简要测试结果
- redis高可用,保证高并发
- 深入学习 Redis系列
- redis获取系统当前时间
- 高并发架构系列:Redis为什么是单线程、及高并发快的3大原因详解
- 2022-03-29 k8s上部署redis企业版相关文档
- 2022-04-07 关于operator-redis的问题的反思引发的自我归一性
- redis info
- 分布式锁 redis分布式锁 zookeeper分布式锁 面试题:如何保证高并发下的下单安全 超卖问题 redission的watchdog
- redis-05 redis 持久化AOF&RDB
- springboot与缓存(整合redis)
- 加锁了,还有并发问题?Redis分布式锁你真的了解?