博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis 的并发竞争问题是什么?了解 redis 事务的 CAS 方案吗?
阅读量:4292 次
发布时间:2019-05-27

本文共 502 字,大约阅读时间需要 1 分钟。

程序员界的彭于晏 2019-04-26 07:48:00

面试题

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

面试官心理分析

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

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

面试题剖析

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

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

 

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

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

转载地址:http://bozws.baihongyu.com/

你可能感兴趣的文章
CTA策略07_MultiTimeframeStrategy
查看>>
Ubuntu 14.04安装和卸载搜狗拼音输入法
查看>>
ubuntu 18.04 设置中文输入法
查看>>
ubuntu使用之-rime
查看>>
Ubuntu 18.04/18.10快速开启Google BBR的方法
查看>>
Ubuntu 16.04启用 TCP 拥塞控制之 BBR
查看>>
TCP BBR算法加速效果实测(比对)
查看>>
解决方案大全ImportError: libta_lib.so.0: cannot open shared object file: No such file or directory
查看>>
anaconda报错 ImportError: No module named conda.cli
查看>>
vnpy策略回测如何设置滑点手续费和size
查看>>
virmach主机购买和使用
查看>>
Ubuntu开启Mongodb 外网访问
查看>>
海龟交易法则11_历史测试的谎言
查看>>
海龟交易法则12_脚踏实地地测试
查看>>
海龟交易法则13_系统
查看>>
jq使用教程09_ 教程集合帖-伙伴们贡献,不断更新(4.17)
查看>>
jq使用教程01_最贴心教程,安装JQData全靠这篇指南
查看>>
jq使用教程02_安装的问题
查看>>
jq使用教程03_JQData说明书概要
查看>>
jq使用教程04_高校版教程
查看>>