redis 网课笔记

缓存 缓存雪崩

缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库。
解决方案
  • 给不同的key的TTL添加随机值
  • 利于Redis集群提高服务的可用性 哨兵模式、集群模式
  • 给缓存业务添加降级限流策略 ngxin或spring cloud gateway
  • 给业务添加多级缓存 Guava

双写一致性

  • 一致性要求高
  • 允许延迟
    数据不一致情况
    在这里插入图片描述

在这里插入图片描述

方案 延迟双删

放入缓存的数据:读多写少。
写操作:延迟双删
仍然有出现脏数据的可能
延时双删:主从集群,读写分离,需要延时让主节点把数据同步到从节点。

方案 互斥锁

写或读时都加锁。
优化:
因为存入缓存的数据,读多写少 -> 共享锁和排它锁

方案 异步通知(MQ、Cannal),保证数据的最终一致性

Redis持久化

RDB 定时对整个内存做快照

  • save
  • bgsace
RDB的执行原理
  • bgsave fork主进程得到子进程, 子进程复制了父进程的页表,子进程共享主进程的内存数据。
  • 子进程读取内存数据并写入RDB文件。
子进程进行读操作时,主进程可能在执行写操作 ------ copy-on-write
  • 主进程执行读操作时,访问共享内存。
  • 主进程执行写操作时,拷贝一份数据,执行写操作。

AOF 记录每一次执行的命令

默认关闭
redis.conf 中配置 appendonly yes
appendfilename 可以指定文件名
appendfsync 配置刷盘时机
alwags:同步刷盘
everysec:每秒刷盘
no:操作系统控制:性能最好,可靠性较差
AOF比RDB文件大得多,bgrewriteaof:AOF文件执行重写功能,用最少的命令达到相同的效果。

redis数据过期策略

  • 惰性删除: 设置key的过期时间之后,仅在需要该key时,检查它是否过期,入股过期就删除。优点CPU友好。缺点:内存不友好。
  • 定期删除:每隔一段时间,对key进行检查,删除过期key。SLOW模式、FAST模式。优点:通过限制删除操作执行的时长和频率来减少删除操作对CPU的影响。定期删除能有效地释放过期键占用的内存。缺点:删除操作的执行时间和频率难以确定。
  • 惰性删除和定期删除配合使用。

redis淘汰策略

  • noeviction:不淘汰任何key,默认
  • volatile-ttl : 有限淘汰剩余时间短的
  • volatile-random:对设置了过期时间的,进行随机淘汰
  • volatile-lru:对设置了过期时间的,进行LRU算法淘汰
  • volatile-lfu:对设置了过期时间的,进行LFU算法淘汰
  • allkeys-random
  • allkeys-lru
  • allkeys-lfu
    LFU:最少频率使用
    LRU:最近最少使用
数据淘汰策略使用建议
  • 优先使用allkeys-lru.尤其是有明显冷热数据区分的,把最经常访问的数据留在内存
  • 业务中数据访问频率差别不大,没有明显冷热数据区分:使用allkeys-random,随机淘汰。
  • 有置顶需求:volatile-lru,且置顶数据不设置过期时间。
  • 有短时高频访问数据:allkeys-lfu 或 volatile-lfu

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

el-tree中展示项换行展示

文章目录 效果如下所示:没有换行展示的效果修改样式换行之后的展示效果 想要了解el-tree使用的详情往下看代码和数据如下所示Vue代码中可能使用到的数据如下Vue的代码如下:没有换行展示的效果换行之后的展示效果样式调试 效果如下所示: 没有…

JSP 学生成绩查询管理系统eclipse开发sql数据库serlvet框架bs模式java编程MVC结构

一、源码特点 JSP 学生成绩查询管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,比较流行的servlet框架系统具有完整的源代码和数据库,eclipse开发系统主要采用B/S模式 开发。 java 学生成绩查询管理系统 代码下载链接…

【MySQL】用户管理权限控制

文章目录 前言一. 用户管理1. 创建用户2. 删除用户3. 修改用户密码 二. 权限控制1. 用户授权2. 查看权限3. 回收权限 结束语 前言 MySQL的数据其实也以文件形式保存,而登录信息同样保存在文件中 MySQL的数据在Linux下默认路径是/var/lib/mysql 登录MySQL同样也可以…

深度学习_9_图片分类数据集

散装代码: import matplotlib.pyplot as plt import torch import torchvision from torch.utils import data from torchvision import transforms from d2l import torch as d2ld2l.use_svg_display()# 通过ToTensor实例将图像数据从PIL类型变换成32位浮点数格式…

Python用RoboBrowser库写一个通用爬虫模版

以下是一个使下载lianjia内容的Python程序,爬虫IP服务器为duoip的8000端口。 from robobrowser import RoboBrowser# 创建一个RoboBrowser对象 browser RoboBrowser(user_agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) …

【网络协议】聊聊CND如何进行提升系统读性能

我们知道对于京东这种仓储来说,其实并不是在北京有一个仓储中心,而是针对全国主要的地方,北京、上海、广州、杭州,郑州等地方都有自己的仓储中心,当用户下单后,就会根据最近的仓储进行发货,不仅…

消息中间件-RabbitMQ介绍

一、基础知识 1. 什么是RabbitMQ RabbitMQ是2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,简称MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法,由Erlang(专门针对于大…

perl列表创建、追加、删除

简介 perl 列表追加元素 主要是通过push和unshift函数来实现。其中,push是追加到列表尾,unshift是追加到列表头。 perl列表删除元素 主要是通过pop和shift函数来实现。其中,pop是从列表尾删除一个元素, shift是从列表头删除一…

java入门-JDK下载与安装

1、下载jdk Java 的产品叫JDK(Java Development Kit: Java开发者工具包),必须安装JDK才能使用java 1、官网地址 https://www.oracle.com/java/ https://www.oracle.com/java/technologies/downloads/ 目前比较稳定的版本为 JDK17. 我们就安…

【GEE】4、 Google 地球引擎中的数据导入和导出

1简介 在本模块中,我们将讨论以下概念: 如何将您自己的数据集引入 GEE。如何将来自遥感数据的值与您自己的数据相关联。如何从 GEE 导出特征。 2背景 了解动物对环境的反应对于了解如何管理这些物种至关重要。虽然动物被迫做出选择以满足其基本需求&am…

Docker Stack部署应用详解+Tomcat项目部署详细实战

Docker Stack 部署应用 概述 单机模式下,可以使用 Docker Compose 来编排多个服务。Docker Swarm 只能实现对单个服务的简单部署。而Docker Stack 只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排。 stack是一组共享…

Scala和Play WS库编写的爬虫程序

使用Scala和Play WS库编写的爬虫程序,该程序将爬取网页内容: import play.api.libs.ws._ import scala.concurrent.ExecutionContext.Implicits.global ​ object BaiduCrawler {def main(args: Array[String]): Unit {val url ""val proxy…

Gorm 中的迁移指南

探索使用 GORM 在 Go 中进行数据库迁移和模式更改的世界 在应用程序开发的不断变化的景观中,数据库模式更改是不可避免的。GORM,强大的 Go 对象关系映射库,通过迁移提供了一种无缝的解决方案来管理这些变化。本文将作为您全面的指南&#xf…

【产品资料】产品经理面试问题(三)

今天和大家免费分享产品经理常见的面试题目,含回答思路分析和回答事例。 【资源下载】 这个资源可以在Axure高保真原型哦小程序里免费下载 打开下方小程序后,搜索产品经理面试题目,获取下载地址 更多原型模板、视频教程、产品文档、定制服…

Redis常见风险分析

击穿 概念:在Redis获取某一key时, 由于key不存在, 而必须向DB发起一次请求的行为, 称为“Redis击穿”。 引发击穿的原因: 第一次访问恶意访问不存在的keyKey过期 合理的规避方案: 服务器启动时, 提前写入规范key的命名, 通过中间件拦截对…

Docker容器中执行throttle.sh显示权限报错:RTNETLINK answers: Operation not permitted

在模拟通信环境时,我执行了一下命令: bash ./throttle.sh wan但是,出现了权限的报错:RTNETLINK answers: Operation not permitted 解决方案说简单也挺简单,只需要两步完成。但是其实又蛮繁琐,因为需要将…

Splunk 创建特色 dashboard 报表

1: 背景: 对原有的dashboard 进行增加点东西,特别是文字部分: 比如: 增加:“this is a guidline for how to use performance". 这段话,就不能写在title, 那样,这段文字,会出现在dashboard 的PDF 文件的分割线的上面,不符合要求。 2: 解决问题: 正确的做法是…

算法模板之单调栈解密 | 图文详解

🌈个人主页:聆风吟 🔥系列专栏:算法模板、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️单调栈讲解1.1 🔔单调栈的定义1.2 🔔如何维护一个单…

VB.NET—窗体引起的乌龙事件

目录 前言: 过程: 总结: 升华: 前言: 分享一个VB.NET遇到的一个问题,开始一直没有解决,这个问题阻碍了很长时间,成功的变成我路上的绊脚石,千方百计的想要绕过去,但事与愿违怎么也绕不过去,因为运行不了…

蓝桥杯官网填空题(方格计数)

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 如下图所示,在二维平面上有无数个 11 的小方格。 我们以某个小方格的一个顶点为圆心画一个半径为 50000 的圆。 你能计算出这个圆里有多少个完整的小方…