工作中redis相关知识总结

在这里插入图片描述


这里写目录标题

  • 一、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.mzph.cn/news/594008.shtml

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

相关文章

矩阵运营怎么弄那么多账号?矩阵账号搭建方案分享

在当今数字营销的浪潮中,“矩阵运营”成为了一个热门话题。许多企业和个人面临着如何高效管理大量社交媒体账号的挑战。本文将详细介绍“矩阵账号搭建方案”,并探索如何利用“万媒易发”这一工具,来提升矩阵运营的效率。 一、矩阵运营的核心要…

【MySQL】数据库之主从复制和读写分离

目录 一、什么是读写分离? 二、为甚要读写分离? 三、什么时候需要读写分离? 四、主从复制与读写分离 五、MySQL支持的二进制日志格式 六、主从复制的工作原理 七、MySQL读写分离的原理 八、MySQL读写分离的方式有哪些 九、实验一&am…

vite + javascript 创建纯 javascript项目

1、环境搭建:需要安装 node 管理器命令:安装了node的后,可以使用 npm ,也可以安装使用 cnpm / pnpm 下载 cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org 下载 pnpm npm i -g pnpm pnpm config set r…

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

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

Java后端开发——Spring实验

文章目录 Java后端开发——Spring实验一、Spring入门1.创建项目,Spring依赖包。2.创建JavaBean:HelloSpring3.编写applicationContext.xml配置文件4.测试:启动Spring,获取Hello示例。 二、Spring基于XML装配实验1.创建JavaBean类&…

CSS 顶部位置翻转动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ rotate-hor-top: isAnimating }"><!-- 元素内容 --><…

【快速全面掌握 WAMPServer】12.WAMPServer 故障排除经验大总结

网管小贾 / sysadm.cc 众所周知&#xff0c;搞开发需要先搭建相应的编程和调试环境。 对于 PHPer 来说&#xff0c;很多像我一样的新手小白们入门的时候&#xff0c;通常会选择一些集成开发环境包&#xff0c;其中就有 WampServer 。 集成环境包被许多人所诟病&#xff0c;说…

Node.js本地搭建简单页面小游戏

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

第二百四十三回 再分享一个Json工具

文章目录 1. 概念介绍2. 分析与比较2.1 分析问题2.2 比较差异 3. 使用方法4. 内容总结 我们在上一章回中介绍了"分享三个使用TextField的细节"相关的内容&#xff0c;本章回中将再 分享一个Json插件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我…

案例087:基于微信小程序的社区养老服务平台设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

polar CTF 简单rce

一、题目 <?php /*PolarD&N CTF*/ highlight_file(__FILE__); function no($txt){if(!preg_match("/cat|more|less|head|tac|tail|nl|od|vim|uniq|system|proc_open|shell_exec|popen| /i", $txt)){return $txt;}else{ die("whats up");}} $yyds(…

B端产品经理学习-B端产品系统调研的工具

系统性调研目标的工具 系统性调研的目标 相对于背景调研&#xff0c;系统行调研是对公司可控因素&#xff08;公司内部&#xff09;和直接作用力&#xff08;消费者、竞争者&#xff09;进行的调研。系统性调研需要输出结论&#xff0c;为达成产品或公司的战略目标而制定行动的…

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

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

Python搭建代理IP池实现存储IP的方法

目录 前言 1. 介绍 2. IP存储方法 2.1 存储到数据库 2.2 存储到文件 2.3 存储到内存 3. 完整代码示例 总结 前言 代理IP池是一种常用的网络爬虫技术&#xff0c;可以用于反爬虫、批量访问目标网站等场景。本文介绍了使用Python搭建代理IP池&#xff0c;并实现IP存储的…

三菱结构化While指令的使用

最近在交流群中&#xff0c;有人就while指令使用错误进行了讨论&#xff0c;问题的总的原因是对While指令理解不到位导致&#xff0c;PLC看门狗报错&#xff01; 错误使用While指令导致看门狗报错 下面就While指令的使用进行说明 WHILE语句。 WHILE语句执行时首先检测条件。…

成为一名合格的前端架构师,前端知识技能与项目实战教学

一、教程描述 本套前端架构师教程&#xff0c;大小35.94G&#xff0c;共有672个文件。 二、教程目录 01.node介绍和环境配置&#xff08;共6课时&#xff09; 02.ES6语法&#xff08;共5课时&#xff09; 03.node基础&#xff08;共29课时&#xff09; 04.Express框架&am…

大语言模型LLM微调技术:P-Tuning

1 引言 Bert时代&#xff0c;我们常做预训练模型微调&#xff08;Fine-tuning&#xff09;&#xff0c;即根据不同下游任务&#xff0c;引入各种辅助任务loss和垂直领域数据&#xff0c;将其添加到预训练模型中&#xff0c;以便让模型更加适配下游任务的方式。每个下游任务都存…

Redis:原理速成+项目实战——Redis实战4(解决Redis缓存穿透、雪崩、击穿)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理项目实战——Redis实战3&#xff08;Redis缓存最佳实践&#xff08;问题解析高级实现&#xff09;&#x…

计算器——可支持小数的任意四则运算(中缀表达式转为后缀表达式算法)

中缀表达式转为后缀表达式的原理过程主要包括以下步骤&#xff1a; 1. 初始化两个栈&#xff0c;一个用于存储操作数&#xff0c;一个用于存储运算符。2. 从左到右扫描中缀表达式的每个字符。3. 如果遇到数字&#xff0c;则直接将其压入操作数栈。4. 如果遇到运算符&#xff0c…

CSS 中间位置翻转动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ rotate-hor-center: isAnimating }"><!-- 元素内容 -->…