2、redis的持久化

redis的持久化

在redist当中,高可用的技术包括持久化,主从复制,哨兵模式,集群。

持久化是最简单的高可用的方法,作用就是备份数据。即将数据保存到硬盘,防止进程退出导致数据丢失。

redis持久化方式:

1、RDB持久化:人工或者定时的把内存当中的数据保存到硬盘,这是一种冷备份的方式(备份的时候不用关闭服务,恢复的时候需要关闭),默认的持久化方式。

2、AOF持久化:类似于mysql的二进制日志,把所有redis的操作记录在二进制日志当中,恢复的时候从二进制的内容进行恢复。全热备份,服务要重启。

AOF的持久化的实时性更好,进程意外丢失,恢复的数据是最多的,AOF是主流的持久化方式。

RDB持久化

RDB持久化:快照持久化,文件的后缀名是.rdb,redis每次重启时都会读取rdb文件进行恢复。有save和bgsave

save:可以在配置文件声明,也可以手动

  • 执行save之后,主进程会进入阻塞。
  • 读写都不能执行
  • 主进程创建rdb文件,直到rdb文件创建完成之后,进程的阻塞才能结束。

bgsave:向主进程发送一个信号,主进程fork(后台)新建一个子进程,在fork的过程中,主进程阻塞,创建完子进程之后,阻塞结束,子进程来创建rdb文件。

redis配置文件/etc/redis/redis.conf 

进入redis命令行模式,执行bgsave命令,生产新的rdb文件/var/lib/redis/dump.rdp文件,复制保存到别的目录下,恢复的话,删除新的rdb文件,把旧的rdb文件再复制过来就行。恢复过程中要先关闭redis,恢复好了之后再重启。

AOF持久化

一旦开启AOF持久化,redis会默认选择aof作为持久化方式,并且立刻读取二进制文件。

开启AOF,一定要在初始化时开启。

redis配置文件/etc/redis/redis.conf ,启用二进制日志文件。

  • 启用二进制日志文件,之前的数据都会被清空,适合初始化使用。

生产二进制日志文件/var/lib/redis/appendonly.aof,我们所有操作都记录在这个文件里,如果想要恢复日志,直接vim进去操作即可。

优化项截断

  • 当发现aof文件被截断时,如果是yes,redis在重启时发现被截断,redis会尽可能的恢复数据,继续运行;如果时no,redis在重启时发现被截断,redis会拒绝启动。
  • 截断:写入的过程中出现异常,内存当中有,但是没有完整的写入到磁盘。

AOF的rewrite机制:重写

重写表示的是压缩,当这个二进制日志文件越来越多,文件越来越大,于是就有了重写的功能,对二进制日志文件进行压缩。

bgrewriteaof进程来进行处理

redis-cli bgrewriteaof

如果涉及到数据迁移,rewrite只支持向上兼容(redis 5—>redis 6)。

RDB和AOF之间的优缺点

1、RDB的文件体积比AOF文件小,适合全量备份,速度也比AOF快。

2、RDB不能实时持久化,数据如此重要,不能够丢失。

3、RBD的兼容性比AOF要差,新老版本之间不能兼容。

4、AOF的实时持久化的,兼容性好,文本格式保存命令。

5、AOF的日志文件比较大,恢复速度比较慢,对磁盘的I/O性能要求也高。

生产中,redis的版本一定要一致,目前最稳定的是5.0.7版本

redis的性能管理

查看redis内存使用情况

  • used_memory:914128:redis数据占用的内存
  • used_memory_rss:11403264:redis向操作系统申请的内存
  • used_memory_peak:976192:redis使用系统内存的峰值(最大值)

  • allocator_frag_ratio:1.26:分配器的碎片比例,分配器的碎片越多,浪费的内存越多,这个值越小越好。
  • allocator_rss_ratio:2.60:分配器使用多少系统的内存
  • rss_overhead_ratio:2.68:rss的开销比例,占用系统的物理内存的额外开销,这个值越小越好。
  • mem_fragmentation_ratio:13.38:内存的碎片(系统分配之后,但不能利用的内存)比例,越低,内存的利用率越高

设置阈值

配置redis的初始化,必须要给redis的内存设置阈值,如果不设置阈值,只要有需要,redis会占满整个内存,而且会继续占用交换分区的空间。

设置阈值后,不会使用交换分区了,到达阈值,系统会自动回收生命周期不足的key。

设置阈值

设置回收机制

回收机制算法

volatile-lru:根据算法lru,从过期时间的数据集合当中淘汰键值,主要针对设置了ttl的键值。

volatile-ttl:根据算法,淘汰即将过期的数据,也是针对设置生命周期的数据

一直删除到小于或者等于内存阈值,才不会继续删除。

redis的雪崩、击穿和穿透

缓存雪崩:整个作为数据库缓存的键值对,全部失效,redis没有办法处理缓存,所有的请求全部集中到数据库上。

redis的雪崩的原因:

  • redis集群大面积故障
  • 所有的缓存键值对全部被删除(作为数据库缓存的键值对是不会设置生命周期)
  • 大量redis请求失败,所有的请求直接到了数据库

redis的击穿:热点数据的缓存失效,大量的热点请求全部转发到了数据库,会导致数据库的性能大幅下降。

最简单的方法是热点数据设置成永不过期。

遇到redis的击穿处理方法:

  1. 我通过mysql的慢查询日志,发现sql执行的速度突然大幅下降
  2. 查询redis,发现缓存的键值对消失了
  3. 我没有redis的密码,由专门负责数据库的人处理。

redis的缓存穿透:缓存的键值对对数据库当中都没有数据,但是依然有客户端不断在请求,黑客在利用漏洞,把大量请求绕过radis,去压垮数据库。

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

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

相关文章

QT----------常用界面组件的使用

一、QComboBox 类 主要功能&#xff1a;提供一个下拉列表&#xff0c;用户可以从中选择一个或多个选项。 #include <QApplication> #include <QComboBox> #include <QVBoxLayout> #include <QWidget> #include <QMessageBox>int main(int argc…

【GridView渐进全解】第四部分GridView分页进阶

目录 一、启用分页 二、修改GridView分页模板 1.进入控件模板修改视图&#xff1a; 2.进入页码模板&#xff08;PagerTemplate&#xff09;视图 3.添加导航按钮控件 4.修改导航控件属性 三、输入页号跳转 1.进入页码模板视图 2.添加文本框及按钮控件 3.编写代码 【接…

单词统计详解---pyhton

有一个.txt的文本文件&#xff0c;对齐单词进行统计&#xff0c;并显示单词重复做多的10个单词 思路&#xff1a; 1将文本文件进行逐行处理&#xff0c;并进行空格分割处理 2新建一个字典&#xff0c;使用get方法将单词一次添加到字典中&#xff0c;并用sorted方法进行排序。…

大数据技术(六)—— Hbase集群安装

目录 一、Hbase安装 1、准备工作 1.1、安装rsync 1.2、编辑脚本 1.3、测试 2、安装Hadoop 3、安装zookeeper 3.1、下载最新稳定版 3.2、安装配置ZK 4、安装Hbase 4.1、解压文件 4.2、hbase-env.sh 4.3、backup-masters 4.4、配置hbase-site.xml 4.5、regionserv…

K8s集群平滑升级(Smooth Upgrade of K8S Cluster)

简介&#xff1a; Kubernetes ‌ &#xff08;简称K8s&#xff09;是一个开源的容器编排和管理平台&#xff0c;由Google开发并维护。它最初是为了解决谷歌内部大规模容器管理的问题而设计的&#xff0c;后来在2014年开源&#xff0c;成为云原生技术的核心组成部分。‌‌1 K8…

结合长短期记忆网络(LSTM)和无迹卡尔曼滤波器(UKF)的技术在机器人导航和状态估计中的应用前景

结合长短期记忆网络(LSTM)和无迹卡尔曼滤波器(UKF)的技术在机器人导航和状态估计中具有广泛的应用前景。如有滤波、导航方面的代码定制需求,可通过文末卡片联系作者获得帮助 文章目录 结合LSTM和UKF的背景结合LSTM和UKF的优势应用实例研究现状MATLAB代码示例结论结合LSTM和…

Spring源码下载与测试

引言 下载了Spring源码想阅读阅读&#xff0c;发现用的是Gradle&#xff0c;原来实习的时候公司用的也是Gradle&#xff0c;但不怎么会用&#xff0c;感觉相比于Maven&#xff0c;Gradle更适合非常大型的项目&#xff0c;因为他的jar包下载的是真快 下载 由于Spring6开始就强…

【HarmonyOS之旅】ArkTS语法(三) -> 渲染控制

目录 1 -> 条件渲染 2 -> 循环渲染 3 -> 数据懒加载 3.1 -> IDataSource类型说明 3.2 -> DataChangeListener类型说明 ArkTS也提供了渲染控制的能力。条件渲染可根据应用的不同状态&#xff0c;渲染对应状态下的UI内容。循环渲染可从数据源中迭代获取数据&…

再见2024,你好2025

再见2024&#xff0c;你好2025 1月2月3月4月5~10月11~12月一些收获读书跑步工作 为了让这篇博客不那么平淡&#xff0c;一句话可以总结为&#xff1a;平平无奇的琐碎&#xff0c;没有亮点成果。 也可以数字化概述&#xff1a;涨了1万粉&#xff0c;赚了10万&#xff0c;跑步300…

阴阳师の新手如何速刷5个SP/SSR?!(急速育成)

目标&#xff1a;攒5个SP/SSR式神&#xff0c;参与急速育成&#xff0c;省四个黑蛋&#xff08;想要快速升级技能而且经常上场的式神在攒够5个式神前先不升级&#xff09;【理论上组成&#xff1a;10蓝40蓝预约召唤福利20修行or抽卡】 关键点&#xff1a;蓝票&#xff0c;新手…

Kerberos用户认证-数据安全-简单了解-230403

hadoop安全模式官方文档&#xff1a;https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html kerberos是什么 kerberos是计算机网络认证协议&#xff0c;用来在非安全网络中&#xff0c;对个人通信以安全的手段进行身份认证。 概念&#…

第 29 章 - ES 源码篇 - 网络 IO 模型及其实现概述

前言 本文介绍了 ES 使用的网络模型&#xff0c;并介绍 transport&#xff0c;http 接收、响应请求的代码入口。 网络 IO 模型 Node 在初始化的时候&#xff0c;会创建网络模块。网络模块会加载 Netty4Plugin plugin。 而后由 Netty4Plugin 创建对应的 transports&#xff0…

SQL 基础教程 - SQL SELECT 语句

SQL SELECT DISTINCT 语句 SELECT DISTINCT 语句用于返回唯一不同的值。 在表中&#xff0c;一个列可能会包含多个重复值&#xff0c;有时您也许希望仅仅列出不同&#xff08;distinct&#xff09;的值。 DISTINCT 关键词用于返回唯一不同的值。 SQL SELECT DISTINCT 语法 …

计算机网络基础知识(7)中科大郑铨老师笔记

协议层次及服务模型 计算机网络的分层设计方法&#xff0c;将复杂的网络功能分解为多个层次&#xff0c;每一层实现特定的功能。 互联网中的TCP/IP协议族&#xff0c;包括物理层、链 路层、网络层、传输层和应用层的功能。然后&#xff0c;数据传输的 过程&#xff0c;从应用层…

Microsoft word@【标题样式】应用不生效(主要表现为在导航窗格不显示)

背景 随笔。Microsoft word 2013基础使用&#xff0c;仅做参考和积累。 问题 Microsoft word 2013&#xff0c;对段落标题文字应用【标题样式】不生效&#xff08;主要表现为在导航窗格不显示&#xff09;。 图1 图2 观察图1和图2&#xff0c;发现图1的文字在应用【标题一】样…

TP 钱包插件版本的使用

目前 TokenPocket 的几个平台中&#xff0c;以 ios 和 安卓版本最为常见&#xff0c;其实很少有人知道&#xff0c;浏览器上有一个插件版本的 Tp, 用电脑多的话&#xff0c;这也是一个挺好的选择。 最新版本现在支持Chrome、Brave 浏览器、Edge&#xff08;Firefox及Opera正在…

微信流量主挑战:三天25用户!功能未完善?(新纪元4)

&#x1f389;【小程序上线第三天&#xff01;突破25用户大关&#xff01;】&#x1f389; 嘿&#xff0c;大家好&#xff01;今天是我们小程序上线的第三天&#xff0c;我们的用户量已经突破了25个&#xff01;昨天还是16个&#xff0c;今天一觉醒来竟然有25个&#xff01;这涨…

【AndroidAPP】权限被拒绝:[android.permission.READ_EXTERNAL_STORAGE],USB设备访问权限系统报错

一、问题原因 1.安卓安全性变更 Android 12 的安全性变更&#xff0c;Google 引入了更严格的 PendingIntent 安全管理&#xff0c;强制要求开发者明确指定 PendingIntent 的可变性&#xff08;Mutable&#xff09;或不可变性&#xff08;Immutable&#xff09;。 但是&#xf…

打印进度条

文章目录 1.Python语言实现(1)黑白色(2)彩色&#xff1a;蓝色 2.C语言实现(1)黑白颜色(2)彩色版&#xff1a;红绿色 1.Python语言实现 (1)黑白色 import sys import timedef progress_bar(percentage, width50):"""打印进度条:param percentage: 当前进度百分比…

ubuntu 使用samba与windows共享文件[注意权限配置]

在Ubuntu上使用Samba服务与Windows系统共享文件&#xff0c;需要正确配置Samba服务以及相应的权限。以下是详细的步骤&#xff1a; 安装Samba 首先&#xff0c;确保你的Ubuntu系统上安装了Samba服务。 sudo apt update sudo apt install samba配置Samba 安装完成后&#xff0c…