1.Redis的信息

(1)单线程容易实现。

(2)效率高轻松处理每秒几十万数据(因为是占内存的所以CPU不是瓶颈)。

(3)支持数据类型多(String,List,hash,set,zSet)。

使用 NoSQL 从数据库中读取数据进行缓存,就可以从内存中读取数据了,而不像数据库一样读磁盘。现实是读操作远比写操作要多得多,所以缓存很多常用的数据,提高其命中率有助于整体性能的提高,并且能减缓数据库的压力,对互联网系统架构是十分有利的。

而且它也能满足互联网高并发需要高速处理数据的场合,比如抢红包、商品秒杀等场景,这些场合需要高速处理,并保证并发数据安全和一致性。

2.Redis缓存击穿问题

缓存击穿其实就是指Redis缓存本来是存在的但是因为过期时间到了然后在这个时候有大量的请打带过来导致请求直接打到数据库大量数据同时访问数据库,这样增加了数据库的压力容易导致数据库崩溃瞬间把后端DB压垮。

过期时间的设置

模拟场景:比如我们将redis缓存设置的过期时间都为一个小时,那么一个小时后将有大量的缓存过期此时如果有大量的请求涌入进来就直接涌入进数据库就容易造成缓存击穿的问题。

所以我们应该将redis缓存的过期时间进行随机的设置避免同一时间过期数据太多。

热点数据的过期

模拟场景:假设在某一时间redis种一个非常热门的一个key过期了然后就有大量的请求打入。

所以我们应该访问的时候把这个缓存时间更新。

2.Redis缓存穿透问题

缓存穿透就是对于请求查询的数据既不存在于redis的缓存中又不存在于数据库中,但是这样每次做查询的时候都会走数据库来查询。所以如果大量这种请求涌入就会造成数据库崩溃。

应该去给查不到的key设置一个空值存入缓存中过期时间不能太长一般五分钟即可。

3.缓存与数据库双写不一致

对于高并发场景下的这种多个用户进行写的操做再去更新Redis缓存时候可能会导致更新数据出现脏数据。

可以用到读写锁来解决此问题。

读写锁(ReadWriteLock)

其实在很多的电商场景下都是用到的读操作是要远远高于写操作的。例如京东、淘宝、拼多多等这些用户去用到浏览商品的读操作很多但是去用到下单购买的写操作却很少。如果用普通的锁去让用户的各种操作之间都进行互斥的话就会出现阻塞时间很长的现象如何就会等待较长的时间,所以使用我们的读写锁来处理就可以即准确的更新Redis的缓存数据又可以减少客户的等待时间。

读写锁(ReadWriteLock)同Lock一样也是一个接口,提供了读锁(readLock)和写锁(writeLock)两种锁的操作机制,一个是只读的锁,一个是写锁。ReentranReadWriteLock是其实现类他的readLock读锁之间是不会互斥的是并行状态各种读操作之间就像没有锁一样的。而writeLock与readLock之间和writeLock与writeLock就会互斥会竞争锁。

Redis的高并发场景解决方案相关推荐

  1. Spring Boot集成Redis缓存之模拟高并发场景处理

    前言 同样我们以上一篇文章为例子,搭建好环境之后,我欧美可以模拟高并发场景下,我们的缓存效率怎么样,到底能不能解决我们实际项目中的缓存问题.也就是如何解决缓存穿透? Spring Boot集成Redi ...

  2. 高并发场景下数据库的常见问题及解决方案

    一.分库分表 (1)为什么要分库分表 随着系统访问量的增加,QPS越来越高,数据库磁盘容量不断增加,一般数据库服务器的QPS在800-1200的时候性能最佳,当超过2000的时候sql就会变得很慢并且 ...

  3. 万字干货 | Python后台开发的高并发场景优化解决方案

    嘉宾 | 黄思涵 来源 | AI科技大本营在线公开课 互联网发展到今天,规模变得越来越大,也对所有的后端服务提出了更高的要求.在平时的工作中,我们或多或少都遇到过服务器压力过大问题.针对该问题,本次公 ...

  4. 干货 | Python后台开发的高并发场景优化解决方案

    嘉宾 | 黄思涵 来源 | AI科技大本营在线公开课 互联网发展到今天,规模变得越来越大,也对所有的后端服务提出了更高的要求.在平时的工作中,我们或多或少都遇到过服务器压力过大问题.针对该问题,本次公 ...

  5. Redis高并发场景下秒杀超卖解决

    目录 1 什么是秒杀 2 为什么要防止超卖 3 单体架构常规秒杀 3.1 常规减库存代码 3.2 模拟高并发 3.3 超卖现象 3.4 分析原因 4 简单实现悲观乐观锁解决单体架构超卖 4.1 悲观锁 ...

  6. 91免费视频Redis+Lua解决高并发场景在线秒杀问题

    为何要使用Lua脚本解决商品超卖的问题呢? Redis在2.6版本后原生支持Lua脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行. 将复杂的或者多步的redis操作,写为一个脚本,一次 ...

  7. 高并发场景之RabbitMQ篇

    上次我们介绍了在单机.集群下高并发场景可以选择的一些方案,传送门:高并发场景之一般解决方案 但是也发现了一些问题,比如集群下使用ConcurrentQueue或加锁都不能解决问题,后来采用Redis队 ...

  8. 分布式锁和mysql事物扣库存_这个是真的厉害,高并发场景下的订单和库存处理方案,讲的很详细了!...

    前言 之前一直有小伙伴私信我问我高并发场景下的订单和库存处理方案,我最近也是因为加班的原因比较忙,就一直没来得及回复.今天好不容易闲了下来想了想不如写篇文章把这些都列出来的,让大家都能学习到,说一千道 ...

  9. 读数据库遇到空就进行不下去_如何解决高并发场景下缓存+数据库双写不一致问题?...

    推荐阅读: 一只Tom猫:手撕分布式技术:限流.通讯.缓存,全部一锅端走送给你!​zhuanlan.zhihu.com 一只Tom猫:MySQL复习:20道常见面试题(含答案)+21条MySQL性能调 ...

最新文章

  1. mysql主从切换(正常切换)
  2. ant-design-pro Login 中的 UserName 和 Password 的验证规则 rules
  3. windows下Python+Editplus windows Python开发环境
  4. c语言音像店程序,音像店管理程序_C 课程设计.pdf
  5. seo提交工具_经验分享:SEO新手面对新网站应该如何去优化
  6. mysql用户变量递归_MYSQL递归树查询的实现
  7. 房子值500万租金仅3500元,卖房拿利息和出租哪个合算?
  8. smartsvn 8.6.6 for linux 的安装与破解
  9. python async_python async
  10. html页面图片延迟加载,实现图片懒加载的几种方法
  11. 已安装pywinrm,仍报错winrm or requests is not installed: No module named winrm
  12. Analyze静态分析所出现的问题总结
  13. WAIC直击:星环科技以大数据AI技术构建新型数字底座
  14. FFmpeg命令(七)、 音频与视频合并成视频
  15. HTML.初学.更新
  16. 小闫陪你入门 Java (一)
  17. jquery获取所有选中的复选框
  18. [附源码]Node.js计算机毕业设计餐厅订餐系统Express
  19. idea最新版下载安装使用
  20. 无损flac文件转mp3格式转换器如何选择?

热门文章

  1. vue.runtime.esm.js?2b0e:1888 TypeError: Cannot read property ‘_wrapper‘ of undefined
  2. 秦、汉、唐、宋、明五大王朝纷争不断,为了争夺土地取得制霸权而连连征战,各国的边境线更是尸横遍野。
  3. 常用域名后缀所代表的含义
  4. QT5.14——模拟交通灯(一)
  5. javascript 数据保留位数(整数保留整数,n位小数保留n位小数)
  6. 微信H5页面调起相册和摄像头,实现图片上传,并上传到本地服务器
  7. P-value个人理解
  8. 中国大飞机计划将振翅飞翔
  9. Android中动画的详细讲解
  10. 基于Node.js的微信跳一跳辅助工具