redis缓存击穿 穿透

在这里插入图片描述

我们之前写了一把分布式锁 并且用redis写的,
redis内部实现是比较完善的,但是我们公司用的时候 redis 至少都是主从,哨兵,cluster
很少有单机的 
呢么我们分布式锁基于集群问题下会有什么问题
比如说当第一个线程设置一个key过来进行加锁,加锁成功后,就执行业务了,redis从主节点到从节点的
同步默认是异步的,如果说我主节点刚写成功,准备吧key同步给从节点,这个时候主节点挂了
此时从节点变成新的主节点,或者说他多个从节点会过来进行选举,来选举一个新的master,新的主节点中是没有key的,它也可以加锁成功,这种情况下又超卖了
redis 主从或者集群,会有这么个问题,他的锁有一种情况下会失效
zk也是集群架构,比如说3个节点组成的集群架构,也可使实现分布式锁,他也有leader和follow节点
对于zk实现分布式锁,他是有一些区别的,如果是redis集群的话,从CAP角度来说
redis满足的更多的是ap,也就是他满足的是可用性,他满足的是多一些
zk满足的是cp,他对数据的一致性要求高一些
怎么体现的?
比方说我要基于zk实现分布式锁,我也要实现key value
他也是leader节点才可以写数据,假设这个分布式锁的key 写在了leader节点 他并不会马上给你返回
加锁成功,他会进行数据同步,如果同步成功(他会进行过半机制的校验) 比如说3个节点同步2个
才算成功,有半数以上的节点写入key 成功,我们这个zk才算是加锁成功,才会返回给主线程是加锁成功的
主从切换的 过程中导致锁key丢失的问题,呢我到底使用redis还是zk实现分布式锁
zk性能肯定不如redis,如果你对性能有要求的话 就用redis,
主从节点切换锁失效
可以使用redLock

在这里插入图片描述

redLock 我们要加一把锁的话 一般来说我们要搞多个redis节点,一般来说搞基数个redis节点  比方说此时搞3个我们要加锁的话,我们set key会发到3个节点上,我客户端至少要收到整个集群节点的半数以上返回OK,也就是说设置分布式锁成功的节点我才会认为你加锁成功
因为这个半数机制存在,再来一个客户端的话 任何一种情况下都不会加锁成功,和zk差不多 也就是我要保证数据一致的话 我可以牺牲一点可用性,我要在多个节点中写锁的话 实际上是对我的可用性有影响的
相对来说可用性上面有一点点延迟 但是这么来说 他的好处,数据一致性会高一些
红锁不推荐用的,如果说都给redis加个从节点  为了高可用,因为红锁的三个redis是互不相干的
比如说redis1万一挂了没有关系,从节点会顶上去变成主节点,这个时候从节点是没有Key信息的  
此时还是会有锁失效的问题产生的

在这里插入图片描述

如果不搞从节点就不会出现问题,红锁的话 如果挂了半数以上节点  此时这个锁就会加不成功
红锁或者zk有一个缺点就是我就加一把锁性能就会降低,按照我们刚才说的
如果节点过多的情况下,加一把锁的话就会往更多的节点发送加锁请求,此时性能就会降低吧红锁不能解决锁丢失的问题
只不过他丢失锁的概率会小一点点 但是他带来的后果就是 他的性能会损失一些
还不如基于zk 来做,所以redLock是有问题的
大促场景下 提升分布式锁性能的问题
分布式锁帮我们解决并发设计的思想是什么,利用redis单线程进行的串行化实现的
我们优化分布式锁比如说 我们要考虑锁的粒度,越小越好,我们加锁的范围肯定是越小越好
第二我们可以利用分段锁类似于currentHashMap来进行分段存储
缓存架构   
中小型公司利用redis作为缓存,放到缓存中的,比如说基于缓存做的crud

在这里插入图片描述

creat 的之后丢到缓存中
新增或者更新商品的时候 都要维护redis的缓存 

在这里插入图片描述

get 的时候先从redis缓存中去取,没有再去从数据库中拿到,之后放到redis缓存
但是如果并发量大的话  就会有redis 缓存问题
如果在高并发情况下有什么问题,例如京东
后台商品很多,我的redis 里面会有很多缓存,呢么我的redis容量要很大
呢对于我们redis,整个线上数据上亿,你丢到redis中对我们redis存储容量是很大的
我们真正的电商网站 真正高频访问的电商不到1%.大量商品都是冷门商品
我没有必要吧很少去访问的商品也丢到缓存浪费我们的资源
其实我们真正用缓存的目的是尽可能吧经常访问的 热点缓存 尽量在缓存中多呆一会
冷门数据 不用一直呆在缓存中,丢缓存的时候 放个时间

在这里插入图片描述

所以我们set的时候在里面放个缓存失效时间,如果get的时候 能get到的话 我们就给他续时间

在这里插入图片描述

这样的话,不怎么访问的冷门商品在缓存中存储1天就失效了
对于我们一直在访问的商品,尽可能的一直呆在缓存中 这样会对我们数据库的请求会大大减少
呢所以在查询缓存,做一个读取延期,如果我这么来做的话,对于每天都来访问的商品会一直在我们缓存中
那些不怎么访问的商品可能也就上架完毕就不在缓存中,实际上我就实现了数据的冷热分离,热点数据我尽可能的留在缓存中.对于冷门的数据,不会在缓存中简单方案的冷热数据分离,大规模数据我们要做一些数据的冷热分离,让热数据尽可能丢到缓存,而且要常驻缓存,冷数据可能要查数据库的,呢么数据库就可以给其他模块用了
比如说大V带货这种场景,冷门突然被发现
冷门商品几万个请求来调用这里直接打到db了,冷门数据突发变为热点数据,大量请求对我们突发性的数据重建缓存,我们可以加锁进行重建 比如说有一个线程进行放缓存的操作 
呢么多个节点的web应用集群这么再每一个web服务器上都要重建一次

在这里插入图片描述
在这里插入图片描述

我们这个时候可以利用redis分布式锁进行重建 基于什么商品加的锁啊

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/170760.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算模式的区域LIS系统源码,基于ASP.NET+JQuery、EasyUI+MVC技术架构开发

云计算模式的区域LIS系统源码 云LIS系统源码,自主版权 LIS系统是专为医院检验科的仪器设备能与计算机连接。可通过LIS系统向仪器发送指令,让仪器自动操作和接收仪器数据。并快速的将检验仪器中的数据导入到医生工作站中进行管理,且可将检验结…

CI/CD:GitLab-CI 自动化集成/部署 JAVA微服务的应用合集

CI/CD:GitLab-CI 自动化集成/部署 JAVA微服务的应用合集 CI/CD:GitLab-CI 自动化集成/部署 JAVA微服务的应用合集安装DockerGitLabGitLab-Runner阿里云容器仓库 GitLab-CIJava微服务的GitLab-CI应用 其他问题Maven本地仓库缓存 CI/CD:GitLab-…

贪心算法学习——最大数

目录 ​编辑 一,题目 二,题目接口 三,解题思路级代码 一,题目 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。 注意:输出结果可能非常大…

虹科分享 | 买车无忧?AR带来全新体验!

文章来源:虹科数字化与AR 阅读原文:https://mp.weixin.qq.com/s/XsUFCTsiI4bkEMBHcGUT7w 新能源汽车的蓬勃发展,推动着汽车行业加速进行数字化变革。据数据显示,全球新能源汽车销售额持续上升,预计到2025年&#xff0…

港联证券:2万元股票一进一出手续费?

股市生意中的手续费是出资者无法避免的一项费用。关于许多出资者来说,手续费的多少对出资收益有着重要的影响。本文将从多个视点分析2万元股票一进一出手续费,并讨论其对出资者和商场的影响。 首先,从出资者的视点来看,2万元股票…

计算机网络第3章-运输层(2)

可靠数据传输原理 可靠数据传输依靠数据在一条可靠信道上进行传输。 TCP也正是依靠可靠信道进行传数据,从而数据不会被丢失。 而实现这种可靠数据传输服务是可靠数据传输协议的责任 构造可靠数据传输协议 1.经完全可靠信道的可靠数据传输:rdt1.0 在…

眨个眼就学会了PixiJS

本文简介 带尬猴,我是德育处主任 当今的Web开发中,图形和动画已经成为了吸引用户注意力的重要手段之一。而 Pixi.js 作为一款高效、易用的2D渲染引擎,已经成为了许多开发者的首选(我吹的)。本文将为工友们介绍PixiJS的…

【uniapp】小程序开发7:自定义组件、自动注册组件

一、自定义轮播图组件、自动注册 以首页轮播图组件为例。 1、创建组件文件src/components/my-swipper.vue 代码如下&#xff1a; <template><view><view class"uni-margin-wrap"><swiper class"swiper" circular :indicator-dots…

移动端之Unity嵌入Android项目开发

目录 前言1 搭建开发环境2 创建Unity项目 2.1 新建项目2.2 Unity构建配置2.3 Android环境相关配置2.4 导出Unity库文件3 创建Android项目 3.1 新建Android项目3.2 Android环境相关配置3.2 导入Unity相关的库3.3 Android中跳转到Unity视图4 进阶扩展 4.1 包体积优化 4.1.1 mono…

【html】图片多矩形框裁剪

说明 由于项目中需要对一个图片进行多选择框进行裁剪&#xff0c;所以特写当前的示例代码。 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><base href"/"><title>图片裁剪</tit…

LVS+keepalived高可用集群

1、定义 keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用&#xff0c;keepalived实现的是调度器的高可用&#xff0c;但keepalived不只为lvs集群服务的&#xff0c;也可以做其他代理服务器的高可用&#xff0c;比如nginxkeepalived也可实现高可用&#xff08;重…

信道数据传输速率、信号传播速度——参考《天勤计算机网络》

一、缘起题目 二、解析 三、总结 信道数据传输速率和信号传播速度是两个不同的概念。 3.1 信道数据传输速率&#xff08;Channel Data Transfer Rate&#xff09; 指的是在通信系统中&#xff0c;通过信道传输的数据量&#xff0c;通常以 比特率&#xff08;bits per second…

Python 算法高级篇:快速排序的优化算法

Python 算法高级篇&#xff1a;快速排序的优化算法 引言 1. 快速排序的基本原理2. 快速排序的优化技巧2.1 随机选择基准2.2 三分法2.3 小数组使用插入排序 3. 性能比较4. 结论 引言 在计算机科学中&#xff0c;排序是一个基本操作&#xff0c;而快速排序&#xff08; Quick So…

接口自动化测试工具,Postman使用详解

一、概念 1、Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件&#xff0c;Postman分为Postman native app和Postman Chrome app两个版本。目前Chrome app已经停止维护&#xff0c;官方也不推荐使用该版本。 2、官网下载地址&#xff1a;http://www.getpostman…

你绝对不知道的接口加密解决方案:Python的各种加密实现

在现代软件开发中&#xff0c;接口测试已经成为了不可或缺的一部分。随着互联网的普及&#xff0c;越来越多的应用程序都采用了接口作为数据传输的方式。接口测试的目的是确保接口的正确性、稳定性和安全性&#xff0c;从而保障系统的正常运行。 在接口测试中&#xff0c;加密…

吃豆人C语言开发—Day2 需求分析 流程图 原型图

目录 需求分析 流程图 原型图 主菜单&#xff1a; 设置界面&#xff1a; 地图选择&#xff1a; 游戏界面&#xff1a; 收集完成提示&#xff1a; 游戏胜利界面&#xff1a; 游戏失败界面 死亡提示&#xff1a; 这个项目是我和朋友们一起开发的&#xff0c;在此声明一下…

金融行业网络安全保护与三级等保合规实施方案

金融行业网络安全保护与三级等保合规实施方案旨在帮助金融机构实施符合三级等保标准的网络安全保护措施。以下是一个基本的实施方案概述&#xff1a; 评估和规划&#xff1a; 进行风险评估&#xff1a;评估网络系统的风险&#xff0c;确定安全威胁、弱点和潜在风险。 确定等级…

Kafka入门04——原理分析

目录 01理解Topic和Partition Topic(主题) Partition(分区) 02理解消息分发 消息发送到分区 消费者订阅和消费指定分区 总结 03再均衡(rebalance) 再均衡的触发 分区分配策略 RangeAssignor(范围分区) RoundRobinAssignor(轮询分区) StickyAssignor(粘性分区) Re…

基于安卓android微信小程序的校园跑腿系统

项目介绍 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;校园跑腿系统被用户普遍使用&#xff0c;为方便用户能…

Kubernetes(K8S)集群部署

目录 一、创建3台虚拟机 二、为每台虚拟机安装Docker 三、安装kubelet 3.1 安装要求 3.2 为每台服务器完成前置设置 3.3 为每台服务器安装kubelet、kubeadm、kubectl 四、使用kubeadm引导集群 4.1 master服务器 4.2 node1、node2服务器 4.3 初始化主节点 4.4 work节…