工作中redis相关知识总结

news2024/11/15 5:06:13

在这里插入图片描述


这里写目录标题

  • 一、Redis数据持久化概念
  • 二、redis数据类型
  • 三、redis缓存的应用流程
  • 四、什么样的数据适合存放到redis中?
    • 1、什么情况下,redis中会没有数据?
    • 2、redis缓存项目在测试中的注意事项
      • a、更新缓存
      • b、淘汰缓存
  • 五、什么是缓存击穿
    • 1、缓存失效的两种情况
    • 2、缓存数据有效期到来的那一瞬间举例
  • 六、什么是缓存穿透
    • 1、如何测试验证?
  • 七、缓存雪崩
    • 1、缓存雪崩的原因
    • 2、缓存雪崩风险
    • 3、解决方案
  • 八、redis 在你们项目中具体的作用,还有哪些常用的功能
    • 1、权限的数据的特点
    • 2、django自动化测试平台以及python开发的平台,需要异步执行任务或者定时执行任务
      • 1、选择一个broker
      • 2、安装redis容器
  • 九、涉及redis相关的内容怎么测试?
    • 1、故障注入

一、Redis数据持久化概念

持久化在Redis中的工作原理就是将你存储在缓存中的数据异步的保存在你的磁盘中实现持久存储。
当电脑或者服务器发生宕机时,我们的内存会被清空,但是存储在磁盘中的数据不会丢失,
当我们再次打开Redis时,磁盘中的数据集就会再次同步到我们的Redis中,也就是从磁盘中再次回到内存中。

二、redis数据类型

String
Hash
List
Set
ZSet

三、redis缓存的应用流程

在这里插入图片描述

四、什么样的数据适合存放到redis中?

读的频率非常高、更新频率较少的数据

应用程序从redis中微秒获取数据

1、什么情况下,redis中会没有数据?

a、第一次查询,数据需要从数据库查询再缓存起来
b、redis数据过期。数据查询不到了
c、redis挂了。整个服务都访问不了了,只能从数据库里面查询。

2、redis缓存项目在测试中的注意事项

a、更新缓存

缓存操作流程-写(更新缓存)
优点: 基本不会出现cache miss的情况。
缺点: 每次更新数据库都更新缓存,比较影响性能。

在这里插入图片描述

b、淘汰缓存

优点: 操作简单,性能比较好。
缺点:至少会出现一个 cache miss。(当大量的请求访问数据库时,数据库压力很很大)

在这里插入图片描述

五、什么是缓存击穿

在缓存过期的一瞬间,同时有大量的请求打进来,由于此时缓存过期了,所以请求最终都会走到数据,造成瞬间数据库请求量大、压力剧增,甚至可能打垮数据库。

1、缓存失效的两种情况

  • a、高峰期大面积缓存key失效。(所有请求全部访问后端数据库)
  • b、局部高峰期,热点缓存key失效(导致海量的请求直接击穿数据库)

2、缓存数据有效期到来的那一瞬间举例

  • 1、突发重要热点事件
  • 2、春节发红包
  • 3、电商降价、抢购、促销活动

在这里插入图片描述

六、什么是缓存穿透

访问一个redis缓存和数据库都不存在的key,此时会直接打到数据库上,并且查不到数据,没法写到redis缓存,所以下一次同样会打到数据库上。
缓存起不到作用,流量大时数据库可能会被打挂,此时缓存就好像被穿透了一样,起不到任何作用。

1、如何测试验证?

使用Jmeter等压测工具进行模拟测试

七、缓存雪崩

缓存雪崩是指缓存失效后导致服务大面积崩溃的后果

1、缓存雪崩的原因

缓冲击穿、缓存穿透、缓存服务不可用

2、缓存雪崩风险

因为缓存服务器挂掉或者热点缓存失效,从而导致海量请求去查询数据库,导致数据库连接不够用或者数据库处理不过来,从而导致整个系统不可用。
数据库服务器压力大,依赖数据库的其他系统就会面临崩溃风险。

3、解决方案

缓存击穿

  • 过期事件打散:高峰期大面积的key不要全部一起失效;或者直接不失效。
  • 热点数据不过期:针对单个热点数据。
  • 互斥锁:万一实在是拿不到缓存了,并发控制。
  • 缓存降级:redis服务器挂了,缓存备份,数据兜底。

缓存穿透

  • 业务规则校验:日期范围、业务规则校验不符合直接返回。
  • 数据格式校验:ID(特意设计)、前16位表示事件,中间3位表示业务分类代码,后面3位表示随机数
  • 布隆过滤器:把大批量的请求参数的真实值,压缩放到过滤器里,每次请求的时候,通过过滤器进行验证。
  • IP黑名单限流:禁止访问。

八、redis 在你们项目中具体的作用,还有哪些常用的功能

1、权限的数据的特点

需要去数据库中频繁的读和写,为了项目提高运行效率,可以把用户的权限在每次登录的时候都缓存到redis中。这样的话,权限判断的中间件就可以方便的从redis中得到当前用户的所有权限,从而判断。
对于那些数据量大,并且需要频繁的读写,一定需要做缓存的

详细的实现过程请查看博客:https://blog.csdn.net/YZL40514131/article/details/128599386

2、django自动化测试平台以及python开发的平台,需要异步执行任务或者定时执行任务

1、选择一个broker

使用celery首先需要选择一个消息队列。安装任意你熟悉的前面提到的celery支持的消息队列。

2、安装redis容器

因为redis默认没有密码,使用云服务器部署redis容器时需要设置密码。新建配置文件/root/redis.conf编写如下配置:

requirepass pythonvip

然后运行如下命令创建容器:

sudo docker run -d -p 9000:6379 -v /home/ubuntu/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis:alpine redis-server /usr/local/etc/redis/redis.conf

redis的连接url格式如下

redis://:password@hostname:port/db_number

详细的实现过程请查看博客:https://blog.csdn.net/YZL40514131/article/details/132245242

九、涉及redis相关的内容怎么测试?

1、故障注入

  • redis故障降级测试
    • 将redis中的数据清空。
    • 获取某个数据,看能否击穿redis去数据中获取到数据。
    • 检测获取到数据是否又保存到数据库中了。
    • 启动redis,恢复数据了,测试能否从redis中获取到正确的数据
    • redis崩溃了,能佛从数据库中获取到数据

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【力扣题解】P236-二叉树的最近公共祖先-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P236-二叉树的最近公共祖先-Java题解🌏题目描述💡题解&#x…

Vue.js 3.4版本发布:解析速度提升2倍,双向绑定革新等新功能

引言 随着2024年的来临,Vue团队的领军人物Evan You宣布了Vue.js 3.4的发布。这个版本不仅仅是修复了一些bug,还带来了一些非常实用的新功能和性能提升。 解析速度提升2倍 这次更新中,Vue.js 3.4实现了解析速度的大幅提升。尤其是在构建模板和脚本的源代码映射时,单文件组…

Python等高线图的绘制(Matplotlib篇-11)

Python等高线图的绘制(Matplotlib篇-11)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

k8s 之7大CNI 网络插件

一、介绍 网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求,但在实现方面也具有一定的灵活性。因此,业界已有不少不同的网络方案,来满足特定的环境和要求。 CNI意为容器网络…

Java基础-----集合类(三)

文章目录 1. Arraylist2. Arraylist常用方法 今天主要学习集合类框架 1. Arraylist Collection:是List和Set的父接口,里面包含了一些公用的方法 List:是一个有序的、不唯一的接口 ArrayList:是List的一个实现类,底层数据结构是数组 public…

终于学会听英文歌了:A Sad Me In Your Eyes

A Sad Me In Your Eyes 来源: https://lyricstranslate.com/en/ln-party-sad-me-your-eyes-lyrics.html Fire can’t burn in my eyes If without your smile Snow can cover your smile If without your love When you think of me, I’ve gone too far I can’t …

八怪:再谈 MySQL 8 这两个精准的时间戳

MySQL 8.0 的 binlog 中多了 immediate_commit_timestamp 和 original_commit_timestamp 的信息,网上也有很多文章进行解释,最近也刚好遇到相关问题,刚好稍微学习一下。 作者:高鹏(八怪),《MySQ…

手把手将ReactJS项目部署到Ubuntu

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 1.构建项目 npm run build 生成build目录: 2.上传项目 将build目录上传到Ubuntu。 可以使用Xftp工具。 3.启动项目 npm install -g serve serve -s …

原生JS做别踩白块游戏

思路 创建初始一个按钮并为他添加点击监听开始创建随机方块,并样式_box.offsetTop speed px结合setInterval使得方块不断下移创建和删除方块的原则:box.offsetTop>0(可视区上部没有方块了)时候需要创建一行方块,…

Apache DolphinScheduler 社区 2023 年度工作报告

随着 2023 年的日历逐渐翻至最后一页,我们欣喜地回顾 Apache DolphinScheduler 社区在这一年中所取得的成就和进步。这一年,我们不仅在社区规模和技术发展上取得了显著成就,还发布了大量的技术文章和博客,进一步丰富了我们的知识库…

【Java进阶篇】Java中Timer实现定时调度的原理(解析)

Java中Timer实现定时调度的原理 ✔️ 引言✔️JDK 中Timer类的定义✔️拓展知识仓✔️优缺点 ✔️ 引言 Java中的Timer类是用于计划执行一项任务一次或重复固定延迟执行的简单工具。它使用一个名为TaskQueue的内部类来存储要执行的任务,这些任务被封装为TimerTask对…

条款16:成对使用 new 和 delete 时要采用相同形式

下面程序的行为是未定义的。至少,stringArray指向的100个string对象中有99个不太可能被正确地析构。 被delete的指针指向单个对象还是一个对象数组?内存数组通常包括数组的大小,delete可以知道需要调用多少个析构函数。 使用delete时使用了方…

SpringBoot 接口对枚举类型的入参以及出参的转换处理

目录 1、在项目中使用枚举类型2、不做任何处理的演示效果2.1、接口出参2.2、接口入参 3、用枚举的code作为参数和返回值3.1 代码案例3.1.1、定义枚举基础接口BaseEnum,每个枚举都实现该接口3.1.2、性别Sex枚举并实现接口BaseEnum3.1.3、定义BaseEnum枚举接口序列化3…

前端工程化回顾-vite 构建神器

1.构建vite 项目 pnpm create vite2.常用的配置: 1.公共资源路径配置: base: ./, 默认是/2.路径别名配置: resolve: {alias: {: path.resolve(__dirname, ./src),ass: path.resolve(__dirname, ./src/assets),comp: path.resolve(__dirnam…

正则表达式 详解,10分钟学会

大家好,欢迎来到停止重构的频道。 本期我们讨论正则表达式。 正则表达式是一种用于匹配和操作文本的工具,常用于文本查找、文本替换、校验文本格式等场景。 正则表达式不仅是写代码时才会使用,在平常使用的很多文本编辑软件,都…

多模态大模型Vary:扩充视觉Vocabulary,实现更细粒度的视觉感知

前言 现代大型视觉语言模型(LVLMs)具有相同的视觉词汇- CLIP,它可以涵盖大多数常见的视觉任务。然而,对于一些需要密集和细粒度视觉感知的特殊视觉任务,例如文档级OCR或图表理解,特别是在非英语场景下,clip风格的词汇…

盛最多水的容器(力扣11题)

例题: 分析: 这道题给出了一个数组,数组里的元素可以看成每一个挡板,要找到哪两个挡板之间盛的水最多,返回盛水量的最大值。这其实是一个双指针问题。 我们可以先固定第一个挡板( i )和最后一个挡板( j )&#xff0c…

FreeRTOS——计数型信号量知识总结及实战

1计数型信号量概念 1)计数型信号量相当于队列长度大于1 的队列,因此计数型信号量能够容纳多个资源 2)适用场景: 事件计数: 当每次事件发生后,在事件处理函数中释放计数型信号量(计数值1&#x…

mysql查询表里的重复数据方法:

1 2 3 4 INSERT INTO hk_test(username, passwd) VALUES (qmf1, qmf1),(qmf2, qmf11) delete from hk_test where usernameqmf1 and passwdqmf1 MySQL里查询表里的重复数据记录: 先查看重复的原始数据: 场景一:列出username字段有重读的数…

【算法每日一练]-dfs bfs(保姆级教程 篇8 )#01迷宫 #血色先锋队 #求先序排列 #取数游戏 #数的划分

目录 今日知识点: 使用并查集映射点,构造迷宫的连通块 vis计时数组要同步当回合的处理 递归求先序排列 基于不相邻的取数问题:dfs回溯 n个相同球放入k个相同盒子:dfs的优化分支暴力 01迷宫 血色先锋队 求先序排列 取数游…