redis的优化和持久化

news2025/1/11 20:48:39

持久化的功能:Redis是内存数据库,数据都是存储在内存中,为了避免服务器断电等原因导致Redis进程异常退出后数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。

Redis 提供两种方式进行持久化:

RDB 持久化:原理是将 Reids在内存中的数据库记录定时保存到磁盘上。
AOF 持久化(append only file):原理是将 Reids 的操作日志以追加的方式写入文件,类似于MySQL的binlog。

RDB 持久化(工作原理):
在这里插入图片描述
AOF 持久化(工作原理):
在这里插入图片描述

开启AOF

Redis服务器默认开启RDB,关闭AOF;要开启AOF,需要在配置文件中配置:
vim /etc/redis/6379.conf
–700行–修改,开启AOF
appendonly yes
–704行–指定AOF文件名称
appendfilename “appendonly.aof”
–796行–是否忽略最后一条可能存在问题的指令
aof-load-truncated yes

AOF持久化和RDB持久化的区别:

①AOF持久化是以追加的方式把redis内存的操作命令保存在文件中;RDB持久化是定时把redis内存的数据进行快照压缩保存成RDB文件;

②他们都是在父进程fork时会出现阻塞,但是AOF的实时性更好;

③AOF持久化占用的内存比较大,速度慢;RDB持久化占用的内存小,速度快;

④AOF持久化的兼容性比RDB持久化好;

redis的优化:

①开启AOF持久化;

②精简键名,给键设置生命周期;

③设置redis的密码;

④多使用hash散列方式在redis中;

⑤开启自动清理内存碎片;

⑥设置clients连接数、memory内存最大数、timeout超时时间;

⑦主从复制、哨兵模式和集群的高可用;

缓存和数据库的数据双写一致性问题:

怎么查:查看两方的位置点偏移量是否一致;

怎么解决:更新数据库,然后删除缓存(或者设置缓存的生命周期),然后如果有更新的数据会同步缓存到redis里;

缓存雪崩:

现象:缓存同一时间大面积的过期失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉;

解决办法:①加锁排队 ②设置生命周期随机;

缓存击穿:

现象:缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。
和缓存雪崩不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库;

解决办法:①设置高热数据永久不过期 ②设置互斥锁

缓存穿透:

现象:缓存和数据库中都没有的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉;

解决办法:①设置校验,例如id<=0的直接过滤 ②使用布隆过滤器,把一定不正确的结果直接拦截。

redis占用内存过高,什么问题,怎么解决?

①空闲键太多,设置生命周期,高热数据不设生命周期
②内存淘汰策略有问题,可以config get maxmemory-policy查询,然后进入配置文件进行添加修改
③内存最大值设置过小,config get maxmemory进行查询,然后配置文件修改
④连接过多,流量太大等
可以get clients查最大连接数是多少,info clients查询已连接是多少,如果不多就查询流量,流量也不大,可能是客户端访问完redis后没有关闭tcp连接,可以查询tcp的连接数,然后进行内核设置快速释放等待时间

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

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

相关文章

在 Android 手机上恢复出厂设置后恢复照片的 4 种简单方法(新方法)

“嗨&#xff0c;谁能帮我恢复我的照片&#xff0c;因为我不小心恢复了出厂设置&#xff0c;而且我没有做备份&#xff1f;几个月来我一直试图通过使用恢复软件来恢复我的照片&#xff0c;root 了一个深扫描&#xff0c;但没用……” 恢复出厂设置可以清除电子设备的所有信息并…

【arxiv】找论文idea : 关于 SAM 的论文扫读(二)

文章目录 一、A Comprehensive Survey on Segment Anything Model for Vision and Beyond二、Segment Anything Model (SAM) Enhanced Pseudo Labels for Weakly Supervised Semantic Segmentation三、How Segment Anything Model (SAM) Boost Medical Image Segmentation?四、…

OJ万题详解––组合线段(C++详解)

好久没有更新博文了&#xff0c;我上一篇博文的发布时间还是&#xff1a; 题目 这是我们周考的第二道题&#xff0c;乍一看&#xff0c;很简单&#xff0c;仔细做&#xff0c;更简单。&#xff08;我都没做起&#xff09; 分析 我相信&#xff0c;很多人第一次看到这个题目就…

Nginx安装与使用

文章目录 1. &#x1fa90;Nginx-概述1.1 介绍1.2 下载和安装1.2.1 官网下载1.2.2 网盘下载1.2.3 安装 1.3 目录结构 2. &#x1fa90;Nginx-命令2.1 常用命令2.2 环境变量配置 3. &#x1fa90;Nginx-应用3.1 配置文件结构3.2 部署静态资源3.2.1 介绍3.2.2 测试 3.3 反向代理3…

conda 笔记 conda命令收集

1 conda相关命令 conda info 判断conda是否正常安装检查conda版本号 conda update -n base conda 将conda更新到当前版本 conda update anaconda 将所有的package尽量更新到最新的版本加尽量的原因是&#xff0c;包裹之间可能会有冲突&#xff0c;所以需要优先保证packa…

玩转ChatGPT:制作思维导图

一、写在前面 最近&#xff0c;在学习深度学习图像识别的相关知识和代码&#xff0c;想着能否用小Chat搞一个思维导图。 简单问小Chat&#xff1a; 咒语&#xff1a;我怎么使用你做一个思维导图&#xff1f;需要配合什么软件生成&#xff1f;&#xff1f; 大意就是&#xff…

JavaEE(系列11) -- 多线程案例4(线程池)

目录 1. 线程池 2. 创建线程池 2.1 Executors类 2.2 ThreadPoolExecutor类 3. 自己实现线程池 1. 线程池 线程池是一种多线程处理形式&#xff0c;处理过程中将任务添加到队列&#xff0c;然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈…

百分位数、数据分布、直方图、正态数据分布

目录 1、百分位数 2、数据分布 3、正态数据分布 1、百分位数 统计学中使用百分位数&#xff08;Percentiles&#xff09;提供一个数字&#xff0c;该数字描述了给定百分比值小于的值。 例如&#xff1a;假设我们有一个数组&#xff0c;包含一时刻一条街上人的年龄 arr […

搜索二维矩阵——力扣74

文章目录 题目描述法一&#xff09;一次二分查找法二&#xff09;两次二分查找法三&#xff09;抽象二叉搜索树BST解法 题目描述 法一&#xff09;一次二分查找 首先分析题目&#xff1a;由于①每行的整数从左到右升序&#xff1b;②每行的第一个整数>前一行的最后一个整数&…

AC和AP和STA信息查询

AC和AP和STA信息查询 1、AC的运行统计信息1.1、查看设备的部件类型及状态信息 2、AP的运行统计信息2.1、AP的运行信息 / 查看RU的运行信息2.2、AP性能统计信息2.3、AP的射频信息2.4、AP重启失败的记录2.5、非法AP的存在情况2.6、设备信道切换的记录信息2.7、查看指定AP射频上的…

自助式数据分析工具:jvs-sdw(数据智仓)图表配置说明和实现效果

图表的查询条件配置示例说明 在JVS数据分析图表中&#xff0c;是支持查询条件进行多个数据展示组件的联动查询&#xff0c;实现的方式是设置统一的查询条件&#xff0c;在每个图表组件中&#xff0c;设置对应的查询字段去关联查询条件&#xff0c;那么下面我们逐步介绍配置方式…

CMOS摄像头驱动分析

CMOS摄像头驱动分析 文章目录 CMOS摄像头驱动分析ov2640_probe_dt从设备树中获取ov2640的GPIO引脚并进行初始化v4l2_i2c_subdev_init初始化v4l2子设备v4l2_ctrl_new_std添加vflip控制器 ov2640_probe_dt从设备树中获取ov2640的GPIO引脚并进行初始化 ov2640_probe_dt从设备树中…

设计模式剖析,授之以渔(java代码)

创建型模式 简单工厂模式 public class FoodFactory {public static Food makeFood(String name) {if (name.equals("noodle")) {Food noodle new LanZhouNoodle();noodle.addSpicy("more");return noodle;} else if (name.equals("chicken")…

【论文阅读笔记】BaFFLe: Backdoor Detection via Feedback-based Federated Learning

个人阅读笔记&#xff0c;如有错误欢迎指出 会议&#xff1a;2021 IEEE 41st International Conference on Distributed Computing Systems (ICDCS) BaFFLe: Backdoor Detection via Feedback-based Federated Learning | IEEE Conference Publication | IEEE Xplore 问题&am…

泰克(Tektronix) TCP305A电流探头TCPA300电流放大器

泰克Tektronix TCP305ATCPA300电流放大器 泰克 TCP305 电流探头是一种同时使用变压器和霍尔效应技术的分芯式探头。当通过 TEKPROBE Level II、TekConnect&#xff08;带 TCA-BNC&#xff09;或 TekVPI&#xff08;带 TPA-BNC&#xff09;接口连接到泰克示波器时&#xff0c;泰…

GPU服务器安装Anaconda

1.下载Anaconda安装包&#xff0c;官网地址&#xff0c;清华源地址。 在官网下载到本地之后&#xff0c;可以通过文件传输上传安装包到服务器&#xff0c;使用清华源地址可以直接使用wget下载所需版本&#xff0c;例如&#xff1a; wget https://mirrors.tuna.tsinghua.edu.c…

Hibernate 快速入门

Hibernate 快速入门 〇、前言一、搭建 Hibernate 项目步骤1:新建 Java 项目附录1:新建Java项目中的相关文件信息步骤2:添加 Hibernate 框架支持附录2:添加Hibernate框架支持后,Java项目中的相关文件信息步骤3:其他关键配置1、添加数据库驱动包(本文以MySQL为例)2、配置…

详解C语言assert宏

前言&#xff1a;我们经常在写代码时&#xff0c;发现一些大牛的代码中总有一句assert&#xff08;表达式&#xff09;&#xff0c;经过在网上的学习&#xff0c;笔者也浅显的了解了assert的相关知识&#xff0c;assert一般用于规范代码&#xff0c;避免不必要的错误&#xff0…

【Linux高级 I/O(5)】初识存储映射 I/O——mmap()和 munmap()(附代码示例)

存储映射 I/O 存储映射 I/O&#xff08;memory-mapped I/O&#xff09;是一种基于内存区域的高级 I/O 操作&#xff0c;它能将一个文件映射到进程地址空间中的一块内存区域中&#xff0c;当从这段内存中读数据时&#xff0c;就相当于读文件中的数据&#xff08;对文件进…

【数据库系统设计栗子】——图书借阅简单设计

图书借阅简单设计&#x1f60e; 前言&#x1f64c;需求分析——数据结构1.1图书信息1.2 书库信息1.3 图书库存信息1.4 用户1.5 借阅1.6 借阅记录概念模型E-R图 逻辑模型 总结撒花&#x1f49e; &#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右铭&#xf…