问题说明

所谓 Redis 的并发竞争 Key 的问题也就是多个系统同时对一个 key 进行操作,但是最后执行的顺序和我们期望的顺序不同,导致了结果的不同

解决方案一:分布式锁+时间戳

(1)如果对这个key操作,不要求顺序

这种情况下,准备一个分布式锁,大家去抢锁,抢到锁就做set操作即可,比较简单。

(2)如果对这个key操作,要求顺序

假设有一个key1,系统A需要将key1设置为valueA,系统B需要将key1设置为valueB,系统C需要将key1设置为valueC.

期望按照key1的value值按照 valueA–>valueB–>valueC的顺序变化。这种时候我们在数据写入数据库的时候,需要保存一个时间戳。假设时间戳如下

系统A key 1 {valueA 3:00}

系统B key 1 {valueB 3:05}

系统C key 1 {valueC 3:10}

那么,假设这会系统B先抢到锁,将key1设置为{valueB 3:05}。接下来系统A抢到锁,发现自己的valueA的时间戳早于缓存中的时间戳,那就不做set操作了。以此类推

解决方案二:消息队列

在并发量过大的情况下,可以通过消息中间件进行处理,把并行读写进行串行化。

把Redis.set操作放在队列中使其串行化,必须的一个一个执行。

这种方式在一些高并发的场景中算是一种通用的解决方案。

参考资料:https://blog.csdn.net/ChenRui_yz/article/details/85096418
https://www.kancloud.cn/hardphp/hardphp-phper/934333

如何解决 Redis 的并发竞争 Key 问题相关推荐

  1. 如何解决redis的并发竞争key问题?附面试答案

    一.背景 我们日常在电商网站购物时经常会遇到一些高并发的场景,例如电商 App 上经常出现的秒杀活动.限量优惠券抢购,还有我们去哪儿网的火车票抢票系统等,这些场景有一个共同特点就是访问量激增,虽然在系 ...

  2. JAVA面试题系列:如何解决Redis的并发竞争问题

    1 面试题 redis的并发竞争问题是什么?如何解决这个问题?了解Redis事务的CAS方案吗? 2 考点分析 这个也是线上非常常见的一个问题,就是多客户端同时并发写一个key,可能本来应该先到的数据 ...

  3. Redis系列教程(七):Redis并发竞争key的解决方案详解

    Redis高并发的问题 Redis缓存的高性能有目共睹,应用的场景也是非常广泛,但是在高并发的场景下,也会出现问题: 高并发架构系列:Redis缓存和MySQL数据一致性方案详解 如何解决Redis缓 ...

  4. Redis并发竞争key的解决方案详解

    1.Redis高并发的问题 Redis缓存的高性能有目共睹,应用的场景也是非常广泛,但是在高并发的场景下,也会出现问题:缓存击穿.缓存雪崩.缓存和数据一致性,以及今天要谈到的缓存并发竞争. 这里的并发 ...

  5. Redis面试 - redis 的并发竞争问题是什么?

    Redis面试 - redis 的并发竞争问题是什么? 面试题 redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗? 面试官心理分析 这个也是线上非常常见的一 ...

  6. 解决redis高并发问题的几种思路

    解决redis高并发问题的几种思路 1:布隆过滤器 首先,布隆过滤器能解决绝大部分恶意攻击的请求,比如我们数据库中的id通常都设为自增的,是有一定范围大小的,如果有黑客恶意用数据库中没有的id一直访问 ...

  7. redis缓存穿透、缓存雪崩、缓存击穿、并发竞争

    关注微信公众号"虾米聊吧",每天更新一篇技术文章,文章内容涵盖架构师成长必经之路应掌握的技术,一起学习,一起交流. 缓存穿透.缓存雪崩.缓存击穿.并发竞争是缓存最常见的几个问题,接 ...

  8. 解决Redis缓存雪崩、穿透、并发、预热、击穿、热点Key等问题

    一.缓存雪崩 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机. 比如一个雪崩的简单过程: 1.redis集群大面积故障 2.缓 ...

  9. 大厂面试官喜欢这样问Redis,双写一致性、并发竞争、线程模型,我整理好了

    你知道的越多,你不知道的越多 点赞再看,养成习惯 https://github.com/java-已经开源,有面试脑图 前言 正文 上几期吊打系列我们提到了Redis的很多知识,还没看的小伙伴可以回顾 ...

  10. Redis:数据并发竞争顺序性

    Redis:数据并发竞争顺序性 关键词 第一种方案:分布式锁(串行)+时间戳(保存一个时间戳判断set顺序) 第二种方案:利用消息队列(并行读写进行串行化) 一.数据并发竞争 这里的并发指的是多个re ...

最新文章

  1. 分表分库之一:分布式数据库的常见用法
  2. Nginx中worker_connections的问题
  3. 协程的挂起、恢复和调度的原理 (二)
  4. IDEA设置取消自动显示参数提示
  5. 在C ++ STL中使用string :: to_string()将数字转换为字符串
  6. python map lambda 分割字符串_Python特殊语法:filter、map、reduce、lambda [转]
  7. c语言异或运算符_计算机中C语言的-运算符
  8. Python 数据科学手册 5.8 决策树和随机森林
  9. 如何获取 WebAssembly 代码
  10. 记录——《C Primer Plus (第五版)》第八章编程练习第八题
  11. SpringBoot实战(二):SpringMvc接收xml请求
  12. 优达学城 python 人工智能入门_深度学习TensorFlow入门资源汇总-如何从零开发人工智能...
  13. 数据结构详解之栈和队列
  14. paip.自定义java 泛型类与泛型方法的实现总结
  15. 开源网店系统Javashop 发布3.0beta版
  16. 怎么修改服务器玩家等级级上限,战神引擎服务端限制玩家最高等级教程
  17. Windows10 安装程序无法继续,因为你的计算机上安装了更新的Internet Explore版本
  18. 信息安全体系三种不同的系统架构:MIS+S、S-MIS S2-MIS
  19. 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
  20. Jetson TX2内存/显存

热门文章

  1. 微软rms 2016_浏览器趋势2016年6月:Microsoft不幸
  2. 推荐十部关于AI的记录片
  3. rtmpdump应用在window中
  4. 计算机网络安全--期末
  5. B. Number Busters----数学推演
  6. IQ使命 Monte Carlo 蒙特卡洛(推箱子)攻略
  7. 什么是LMS算法(Least mean square)
  8. 【Java小项目一:点菜系统】
  9. 汽车音响Systemhead单位
  10. 使用卷积计算移动平均值