工作中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.rhkb.cn/news/229992.html

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

相关文章

C# PrinterSettings修改打印机纸张类型,paperType

需求:直接上图,PrinterSettings只能改变纸张大小,打印质量,无法更改打印纸类型 爱普生打印机打印照片已经设置了最高质量,打印图片仍不清晰,需要修改打印纸类型,使用PrintDialog调出对话框&…

【力扣100】【好题】79.单词搜索

添加链接描述 class Solution(object):# 定义上下左右四个行走方向directs [(0, 1), (0, -1), (1, 0), (-1, 0)]def exist(self, board, word):""":type board: List[List[str]]:type word: str:rtype: bool"""m len(board)if m 0:return Fa…

如何在Mendix中实现全文检索

功能背景 在日常的应用使用过程中,存在大量希望使用全文检索技术的场景,对资料库中的内容进行查询。Mendix默认的结构化查询方式,适合对特定业务实体进行类似数据库单表的基于SQL语句的查询。那如何在Mendix实现全文检索的功能呢&#…

修复移动硬盘显示盘符但打不开问题

问题: 移动硬盘显示盘符,但无法打开。点击属性不显示磁盘使用信息。 分析解决: 这是由于硬盘存在损坏导致的,可以通过系统自带的磁盘检查修复解决,而无需额外工具。 假设损坏的盘符是E,在命令行运行以下命令…

linux(mysql下载以及操作)

下载mysql 查看镜像 docker images 下载MySQL镜像 mysql/mysql-server:8.0 创建文件夹,创建配置文件和放数据文件 mkdir -p /data/mysql/{conf,,data} 创建配置文件 my.cnf 写入配置文件my.cnf的代码 [client] default-character-setutf8[mysql] de…

golang锁源码【只有关键逻辑】

条件锁 type Cond struct {L Lockernotify notifyList } type notifyList struct {wait uint32 //表示当前 Wait 的最大 ticket 值notify uint32 //表示目前已唤醒的 goroutine 的 ticket 的最大值lock uintptr // key field of the mutexhead unsafe.Pointer //链表头…

循环生成对抗网络(CycleGAN)

一、说明 循环生成对抗网络(CycleGAN)是一种训练深度卷积神经网络以执行图像到图像翻译任务的方法。网络使用不成对的数据集学习输入和输出图像之间的映射。 二、基本介绍 CycleGAN 是图像到图像的翻译模型,就像Pix2Pix一样。Pix2Pix模型面临…

whl is not a supported wheel on this platform.解决办法

1.问题: 安装torch产生 2.解决办法: 使用pip debug --verbose查看 对应的torch版本号 Compatible tags字样,这些就是当前Python版本可以适配的标签。例如,我的Python版本是3.11,可以匹配下面这些文件名:…

一种删除 KubeSphere 中一直卡在 Terminating 的 Namespace--KubeSphere Logging System的简单方法

文章目录 一、问题提出二、删除方法1,获取kubesphere-logging-syste的详细信息json文件2,编辑kubesphere-logging-system.json3,执行清理命令 三、检查结果 一、问题提出 在使用 KubeSphere 的时候发现有一个日志服务KubeSphere Logging Sys…

Python贪吃蛇小游戏(PyGame)

文章目录 写在前面PyGame入门贪吃蛇注意事项写在后面 写在前面 本期内容:基于pygame的贪吃蛇小游戏 实验环境 python3.11及以上pycharmpygame 安装pygame的命令: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygamePyGame入门 pygam…

Qt编写的exe程序上添加程序信息

1、qtcreator编写 在pro文件中添加如下信息 # 版本信息 VERSION 4.0.2.666# 图标 RC_ICONS Images/MyApp.ico# 公司名称 QMAKE_TARGET_COMPANY "Digia"# 产品名称 QMAKE_TARGET_PRODUCT "Qt Creator"# 文件说明 QMAKE_TARGET_DESCRIPTION "Qt …

C语言实例_math.h库函数功能及其用法详解

一、前言 数学在计算机编程中扮演着至关重要的角色,C语言的math.h头文件提供了一系列的函数和工具,用于数学计算和常用数学函数的实现。这些函数包括数值运算、三角函数、指数对数函数等,为开发人员提供了强大的数学处理能力。本文将对math.…

【C语言】自定义类型:结构体深入解析(三)结构体实现位段最终篇

文章目录 📝前言🌠什么是位段?🌉 位段的内存分配🌉VS怎么开辟位段空间呢?🌉位段的跨平台问题🌠 位段的应⽤🌠位段使⽤的注意事项🚩总结 📝前言 本…

教育机构培训系统小程序功能清单

制作一款适合自己的教育机构培训系统小程序,可以为学员提供更便捷的学习体验,同时提高机构的教学效率。今天将详细介绍如何使用乔拓云平台制作教育机构培训系统小程序。 在浏览器搜索乔拓云,登录到后台,选择教育系统并点击进入。在…

后缀自动机超详细

后缀自动机 1.关于 e n d p o s endpos endpos 理解含义 假设字符串s是字符串S的一个子串,则 e n d p o s ( s ) endpos(s) endpos(s)表示s在S中的所有结束位置,如在字符串 a b c a b c a b abcabcab abcabcab中, e n d p o s ( a b ) 2 …

文件操作安全之-目录穿越流量告警运营分析篇

本文从目录穿越的定义,目录穿越的多种编码流量数据包示例,目录穿越的suricata规则,目录穿越的告警分析研判,目录穿越的处置建议等几个方面阐述如何通过IDS/NDR,态势感知等流量平台的目录穿越类型的告警的线索,开展日常安全运营工作,从而挖掘有意义的安全事件。 目录穿越…

go 源码解读 sync.RWMutex

sync.RWMutex 简介源码结构RLockRUnlockUnlockgo 运行时方法 简介 简述sync包中读写锁的源码。 (go -version 1.21) 读写锁(RWMutex)是一种并发控制机制,用于在多个 goroutine 之间对共享资源进行读写操作。它提供了…

flutter学习-day21-使用permission_handler进行系统权限的申请和操作

文章目录 1. 介绍2. 环境准备2-1. Android2-2. iOS 3. 使用 1. 介绍 在大多数操作系统上,权限不是在安装时才授予应用程序的。相反,开发人员必须在应用程序运行时请求用户的许可。在 flutter 开发中,则需要一个跨平台(iOS, Android)的 API 来…

python爬虫实现获取招聘信息

使用的python版本: 3.12.1 selenium版本:4.8.0 urllib版本:1.26.18 from selenium import webdriver from selenium.webdriver import ActionChains import timeimport re import xlwt import urllib.parsedef get_html(url):chrome_drive…

5大自动化测试的Python框架,看完就能涨薪5k 【实用干货】

目前,它在Tiobe指数中排名第三个,仅次于Java和C。随着该编程语言的广泛使用,基于Python的自动化测试框架也应运而生,且不断发展与丰富。 因此,开发与测试人员在为手头的项目选择测试框架时,需要考虑许多方…