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

在这里插入图片描述

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

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

相关文章

05 # 手写 bind

bind 干了什么&#xff1f; 改变 this 指向没有让函数执行&#xff0c;返回一个改变 this 指向后的函数 bind 难点在于参数的收集 手写 bind 简单实现如下&#xff1a; <script>Function.prototype.kaimoBind function (content) {// 获取到 bind 里的剩余参数let …

Linux C语言进阶-D3~D4字符串处理函数

求字符串长度函数strlen、字符串拷贝strcpy、字符串连接strcat、字符串比较strcmp 头文件<string.h> 求字符串长度strlen函数 1、计算字符串长度&#xff0c;并且遇到\0结束&#xff0c;返回字符串长度 2、 计算字符串长度&#xff0c;遇到转义字符&#xff0c;\不算在内…

EVM6678L 开发教程: IBL-TFTP 引导 elf 文件

目录 EVM6678L 开发教程: IBL-TFTP 引导 elf 文件安装 Tftpd64测试工程测试说明 EVM6678L 开发教程: IBL-TFTP 引导 elf 文件 参考: "C:\ti\mcsdk_2_01_02_06\tools\boot_loader\examples\i2c\tftp\docs\README.txt" 此教程介绍如何在 EVM6678L 开发板上实现 IBL-…

开关电源测试过压保护的测试标准及其方法

过压保护的原理 过压保护是电压超过预定值时降低电压的一种方式&#xff0c;原理是通过电路中的电压检测电路来检测电路中的电压是否超过了设定的阈值&#xff0c;如果超过了阈值&#xff0c;就会触发过压保护器件&#xff0c;使电源断开或使受控设备电压降低&#xff0c;保护电…

docker--基本操作

第 1 章 Docker基础 1.1 docker简介 在这一部分我们主要讲两个方面&#xff1a; docker是什么、docker特点 1.1.1 docker是什么 docker是什么&#xff1f; docker的中文解释是码头工人。 官方解释&#xff1a; Docker是一个开源的容器引擎&#xff0c;它基于LCX容器技术&…

【Unity】【VR开发疑难】Unity运行就报无法启动XR Plugin

【现象】 连接Link后运行Unity的VR项目Link也无反映&#xff0c;Unity控制台报&#xff1a;无法启动XR Plugin&#xff0c;并说是由于Oculus头盔未连接导致。 【分析】 打开Oculus PC客户端&#xff0c;发现状态是连接正常。重启机器后&#xff0c;提示Oculus没有出于RunTim…

【算法|滑动窗口No.4】leetcode 485.最大连续 1 的个数 487.最大连续 1 的个数 II 1004. 最大连续1的个数 III

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

Kubernetes - Ingress HTTP 负载搭建部署解决方案(新版本v1.21+)

在看这一篇之前&#xff0c;如果不了解 Ingress 在 K8s 当中的职责&#xff0c;建议看之前的一篇针对旧版本 Ingress 的部署搭建&#xff0c;在开头会提到它的一些简介Kubernetes - Ingress HTTP 负载搭建部署解决方案_放羊的牧码的博客-CSDN博客 开始表演 1、kubeasz 一键安装…

左移测试,如何确保安全合规还能实现高度自动化?

「云原生安全既是一种全新安全理念&#xff0c;也是实现云战略的前提。 基于蚂蚁集团内部多年实践&#xff0c;云原生PaaS平台SOFAStack发布完整的软件供应链安全产品及解决方案&#xff0c;包括静态代码扫描Pinpoint&#xff0c;软件成分分析SCA&#xff0c;交互式安全测试IA…

Xray+awvs联动扫描

首先xray开启监听 xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output xray-xxx.html --plugins sqldet,xxe,upload,brute-force,cmd-injection,struts,thinkphp 然后准备目标csv文件,每行一个url或ip然后加个逗号 接着awvs导入csv 对导进来的每个目…

CHS零壹视频恢复程序换机加载扫描结果的方法

有些特殊情况下我们需要把当前机器上扫描的结果在另外一台机器上加载&#xff0c;这样可以避免多次扫描浪费时间。目前CHS零壹视频恢复程序监控版、专业版、高级版已经支持换机加载&#xff0c;下面这个教程演示了如何换机加载。 STEP1&#xff1a;选择扫描对象点击扫描->根…

Midjourney保姆级入门教程

文章目录 一、Midjourney注册二、新建自己的服务器三、开通订阅 AI绘画即指人工智能绘画&#xff0c;是一种计算机生成绘画的方式。是AIGC应用领域内的一大分支。 AI绘画主要分为两个部分&#xff0c;一个是对图像的分析与判断&#xff0c;即“学习”&#xff0c;一个是对图像的…