专栏首页HUC思梦的java专栏Redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗?

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

面试官心理分析

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

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

面试题剖析

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Cent7安装mysql5.7.11全过程

    https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.11.tar.gz

    HUC思梦
  • redis4.0.10安装与常用命令

    ----------- redis安装 ----------------------------------------- -- 安装reids:https:/...

    HUC思梦
  • jedis五种数据类型的方法解释

    1)连接操作命令 quit:关闭连接(connection) auth:简单密码认证 help cmd: 查看cmd帮助,例如:hel...

    HUC思梦
  • 深入理解Mysql——锁、事务与并发控制

    本文对锁、事务、并发控制做一个总结,看了网上很多文章,描述非常不准确。如有与您观点不一致,欢迎有理有据的拍砖!

    Java团长
  • 理解MySQL——架构与概念

    写在前面:最早接触的MySQL是在三年前,那时候MySQL还是4.x版本,很多功能都不支持,比如,存储过程,视图,触发器,更别说分布式事务等复杂特性了。但从5....

    哲洛不闹
  • 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务

    "D:\ApplicationFiles\System\VMware Workstation\vmrun.exe" start "F:\virtualMachi...

    noteless
  • CentOS下Redis的安装

    CentOS下Redis的安装 前言 安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么redis...

    用户1214487
  • JGR专刊 |桥接天气和气候预报之间的鸿沟

    https://agupubs.onlinelibrary.wiley.com/doi/toc/10.1002/(ISSN)2169-8996.BRIDGE1

    气象学家
  • 经典面试题-两个线程交替打印奇数和偶数

    今天下班时候和同事聊天偶然听到面试题“两个线程交替打印奇数和偶数”的实现,这里做一个复盘。

    趣学程序-shaofeer
  • 经典面试题-两个线程交替打印奇数和偶数

    今天下班时候和同事聊天偶然听到面试题“两个线程交替打印奇数和偶数”的实现,这里做一个复盘。

    Throwable

扫码关注云+社区

领取腾讯云代金券