# 使用 Redis 的 BGSAVE 创建卡顿现象
在这篇文章中,我将指导一个刚入行的小白,了解如何实现 Redis 的 `BGSAVE` 命令导致的卡顿现象。这是一个对 Redis 性能调优与理解的有趣练习,尤其是在高并发环境中。在我们深入细节之前,让我们首先概述整个流程。
## 整个流程概述
以下表格展示了创建 Redis `BGSAVE` 卡顿现象的基本步骤:
| 步骤 | 描述            
                
         
            
            
            
            使用时需要先导入依赖包,<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <versi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-10 21:53:44
                            
                                5阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            @Cacheable实现自动缓存,属性为value、key和condition:参数作用value缓存的名称key缓存的 key, SpEL 表达式condition缓存的条件本文环境为SpringBoot2.X,以下为使用过程及个人理解:添加依赖<dependency>
	<groupId>org.springframework.boot</groupId>
            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-13 10:05:19
                            
                                47阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            作者:任坤现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。1、背景线上有套 redis 主从,版本4.0,开发抱怨说经常会出现周期性卡顿。应用日志显示每隔10多分钟出现一次,一个普通调用就需要执行1s左右,然后自动恢复,get/set 均受影响2、诊断查看 redis qps 和 cpu 监控,均未发现有用线索。登录            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-12-20 15:01:21
                            
                                115阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Redis AOF卡顿问题至今困扰着许多开发者,对于实时业务场景,Redis的持久化策略尤其重要。Redis的Append Only File(AOF)机制能够将写操作记录到文件中,但在某些情况下,AOF的读写会导致系统的卡顿,影响业务的正常运行。本文将对此问题进行全面分析与解决,确保Redis在实时业务中的高效稳定。
### 问题背景
在一个高并发的在线电商系统中,Redis通常用于存储购物            
                
         
            
            
            
            save 900 1  # 时间策略save 300 10  # 时间策略save 60 10000  # 时间策略dbfilename dump.rdb   #文件名称dir /home/work/app/redis/data/    #文件保存路径 stop-writes-on-bgsave-error yes   # 如果            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-29 13:11:54
                            
                                242阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1 介绍Redis支持RDB和AOF两种持久化机制,持久化有效避免因进程退出数据丢失问题,重启时利用之前持久化的文件即可实现数  据恢复。2 RDBRDB持久化把当前进程数据生成快照保存到硬盘,代表Redis在某个时间点上的数据快照,RDB有手动和自动触发。  - 手动触发  - save:阻塞服务器,直到RDB完成,已弃用;  - bgsave:Redis进程fork出子进程,RDB持久化过程由            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-16 17:03:33
                            
                                1477阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            关于如何分析、排查、解决Redis变慢问题,我总结的checklist如下:1、使用复杂度过高的命令(例如SORT/SUION/ZUNIONSTORE/KEYS),或一次查询全量数据(例如LRANGE key 0 N,但N很大) 分析:a) 查看slowlog是否存在这些命令 b) Redis进程CPU使用率是否飙升(聚合运算命令导致) 解决:a) 不使用复杂度过高的命令,或用其他方式代替实现(放            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-08 06:52:33
                            
                                172阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            rdb模式是默认模式,可以在指定的时间间隔内生成数据快照(snapshot),默认保存到dump.rdb文件中。当redis重启后会自动加载dump.rdb文件中内容到内存中。用户可以使用SAVE(同步)或BGSAVE(异步)手动保存数据可以设置服务器配置的save选项,让服务器每隔一段时间自动执行一次BGSAVE命令,可以通过save选项设置多个保存条件,但只要其中任意一个条件被满足,服务器就会            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-07 11:05:12
                            
                                316阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            RDB持久化Redis是内存数据库,它将自己的数据存储在内存当中,所以当计算机关机,或者redis退出,就会导致数据丢失,所以需要把数据保存到磁盘上。RDB就是一种持久化方式。有两个命令用于生成RDB文件,SAVE和BGSAVE,两者的不同点在于SAVE是将redis进程阻塞后进行保存,BGSAVE是创建出一个子进程完成RDB文件的保存,父进程可以继续处理请求命令。执行BGSAVE期间,客户端给服            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-23 20:43:34
                            
                                193阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # 如何避免Redis Keys导致卡顿问题
在使用Redis作为缓存或数据库时,经常会遇到因为Keys过多导致Redis性能下降,甚至引起卡顿的问题。这种情况通常是由于大量短暂的Keys频繁地被创建和删除,导致Redis不得不进行频繁的内存回收操作,影响了其正常的工作效率。
为了避免Redis Keys导致卡顿问题,我们可以采取以下几种措施:
## 合理设置过期时间
在使用Redis存储            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-04-07 03:49:26
                            
                                90阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 如何解决网站偶尔卡顿的问题
## 概述
在开发网站过程中,我们经常会遇到网站偶尔出现卡顿的情况。这些卡顿可能是由于数据库负载过高、网络延迟、缓存问题等原因造成的。本文将介绍如何使用Redis来解决网站偶尔卡顿的问题。
## 流程概览
下表列出了解决网站偶尔卡顿问题的流程和每个步骤需要做什么。
| 步骤 | 描述 |
| --- | --- |
| 1 | 安装Redis |
| 2 |            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-08-14 14:54:58
                            
                                41阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 实现Redis惰性删除卡顿
## 一、流程介绍
为了实现Redis的惰性删除功能,我们需要首先了解整个流程。下面是从接收请求到执行删除操作的流程:
| 步骤 | 描述 |
| --- | --- |
| 1 | 接收请求,将待删除的键值对放入延时队列 |
| 2 | 定时任务检查延时队列,将过期的键值对移动到删除队列 |
| 3 | 定时任务逐一删除删除队列中的键值对 |
## 二、实            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-04-07 03:50:26
                            
                                29阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            【聊聊主从 – 同步原理】从服务器会向主服务器发出SYNC指令,当主服务器接到此命令后,就会调用BGSAVE指令来创建一个子进程专门进行数据持久化工作,也就是将主服务器的数据写入RDB文件中。在数据持久化期间,主服务器将执行的写指令都缓存在内存中。在BGSAVE指令执行完成后,主服务器会将持久化好的RDB文件发送给从服务器,从服务器接到此文件后会将其存储到磁盘上,然后再将其读取到内存中。这个动作完            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-22 22:08:17
                            
                                35阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Redis的持久化机制有两种:RDB持久化和AOF持久化。因为Redis是一个内存数据库,如果没有合适的持久化机制,那么一旦服务器进程退出,服务器中的数据库状态也会消失。本章介绍RDB持久化机制。RDB持久化RDB持久化,是Redis可以将数据库状态保存到一个RDB文件中,并可以通过该RDB文件生成RDB文件的时候的数据库状态。RDB文件是一个经过压缩的二进制文件。生成RDB文件的Redis命令有            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-06 16:19:12
                            
                                143阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、RBD方式  rdb方式是通过快照的形式将内存中的数据保存一份副本存储在硬盘。1、配置文件自动执行快照  在配置文件中设置参数,可以使redis服务在一定条件下自动执行快照。配置如下:  save  900 1  save  300 10  save  60   1000  意思是,在N秒内有M次对数据的操作就要执行一次快照,如900秒至少有一            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-04 18:24:42
                            
                                338阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持 久化过程分为手动触发和自动触发。5.1.1 触发机制 手动触发分别对应save和bgsave命令: ·save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存 比较大的实例会造成长时间阻塞,线上环境不建议使用。运行save命令对应 的Redis日志如下: * DB saved on disk ·bgsave命令:R            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-03 15:30:42
                            
                                487阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            打开开发者工具看network里的瀑布图。原因一:http请求次数太多解决:减少http请求次数① 图片地图:把多张图片整合到一张图片中,以位置定位超链接。② CSS Sprites合并图片,通过指定CSS的backgroud-image和backgroud-position来显示元素。③ 合并JS脚本和CSS样式表。④ 使用外部JS和CSS文件。原因二:接收数据时间过长,如下载资源过大解决:对H            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-20 20:36:45
                            
                                52阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一文搞懂 Redis 的 持久化机制Redis 支持的 持久化机制 有三种:RDB(Redis DataBase)持久化AOF(Append Only File)持久化RDB-AOF 混合持久化1、RDB(Redis DataBase)Redis 默认采用的持久化机制以 快照 的形式将进程数据持久化到硬盘中会生成一个经过 压缩 的二进制文件(文件后缀为 .rdb)文件内部存储了 各个数据库的 键值            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-24 04:59:59
                            
                                618阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            持久化RDB方式:rdb方式的持久化是通过快照完成的。符合一定条件时redis会自动将内存中的所有数据生成一份副本并存储在硬盘上,这个过程叫快照。以下几种情况会对数据进行快照:  1 根据配置规则进行自动快照  2 用户执行save 或 bgsve命令  3 执行 flushall 命令  4 执行复制时根据配置:save 900 1 ,在900秒内有一个及以上的键被更改则进行快照。  save            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-30 13:45:27
                            
                                79阅读