该段摘自于《redis设计与实现》空间预分配用于优化 SDS 的字符串增长操作: 当 SDS 的 API 对一个 SDS 进行修改, 并且需要对 SDS 进行空间扩展的时候, 程序不仅会为 SDS 分配修改所必须要的空间, 还会为 SDS 分配额外的未使用空间。其中, 额外分配的未使用空间数量由以下公式决定:如果对 SDS 进行修改之后, SDS 的长度(也即是 len 属性的            
                
         
            
            
            
            Redis ●对于已经过期的数据, Redis 将使用两种策略来删除这些过期键,它们分别是惰性删除和定期删除 ●惰性删除是指Redis服务器不主动删除过期的键值,而是当访问键值时,再检查当前的键值是否过期 如果过期则执行删除并返回null给客户端;如果没过期则正常返回值信息给客户端●优点:不会浪费太多的系统资源,只是在每次访问时才检查键值是否过期 缺点:删除过期键不及时,造成了一定的空间浪费 ●除            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-05 12:38:30
                            
                                81阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            redis数据删除/内存淘汰如果我们设置一批key只能存活1小时,那么1小时之后,redis是怎么对这批数据进行删除的?答案:定期删数+惰性删除(1)定期删除指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。注意,这里可不是每隔100ms就遍历所有的设置过期时间的key,那样就是一场性能上的灾难。实际上redis是每隔100ms随机抽取一些            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-10 15:01:19
                            
                                66阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文章目录前言lazy freeflush异步队列AOF Sync更多异步删除点 前言Redis 虽然是单线程的,但是其内部实际上并不是只有一个主线程,它还有几个异步线程专门用来处理一些耗时的操作。lazy free删除指令 del 会直接释放对象的内存,大部分情况下,这个指令非常快,没有明显延迟。不过如果删除的 key 是一个非常大的对象,比如一个包含了千万元素的 hash,那么删除操作就会导致            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-07 17:15:56
                            
                                69阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            10. Redis 给缓存数据设置过期时间有啥用?一般情况下,我们设置保存的缓存数据的时候都会设置一个过期时间。为什么呢?因为内存是有限的,如果缓存中的所有数据都是一直保存的话,分分钟直接Out of memory。Redis 自带了给缓存数据设置过期时间的功能,比如:127.0.0.1:6379> exp key  60 # 数据在 60s 后过期
(integer) 1
127.0.0.            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-03 16:50:50
                            
                                31阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
                    在redis数据库中,可以对键值对设置过期时间。当键值对过期时,redis会通过一定的机制将过期键删除。redis的过期键删除策略有两种:定期删除和惰性删除。惰性删除 
         惰性删除是每次获取键值对时,都对获取的键进行过期检查,如果过期的话,就删除该键值对;如果没过 
 
  期,就返回该            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-10 13:15:08
                            
                                52阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、redis的过期策略:redis的过期策略是:定期删除+惰性删除redis在存储数据时,可能会设置过期时间,而所谓的定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key进行检查,如果过期了就会删除。至于为啥是每隔100ms随机抽取一些数据进行检查而不是全部检查,这就与cpu负载有关了,如redis中的数据十分庞大,并且全部都设置了过期时间,依次全部检查并且进行删除            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-09 16:31:20
                            
                                214阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录前言一、过期删除1. 删除哪些?2. 触发删除2.1 请求时触发:2.2 定期触发:3. AOF、RDB和复制功能3.1 RDB:3.2 AOF:3.3 主从复制:4. 阻塞风险4.1 风险点:4.2 惰性删除(lazy_free):二、再谈惰性删除1. 配置化?2. 无法惰性处理?总结 前言本文参考源码版本 redis6.2如果一个键过期了,什么时候会被删除呢?又如何找出这些过期 ke            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-10 13:19:18
                            
                                148阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            【懒惰删除】Redis内部利用单线程处理了绝大部分指令,但对于一些耗时的操作,还有几个异步线程在做支撑。对于大部分key来说,del指令非常快,但如果key的value是一个很大的对象,那么del就会造成卡顿,所以Redis4.0引入了unlink指令,可以对删除操作进行懒处理,即不立即进行删除操作,而是交给一个异步线程处理并回收内存。当执行unlink指令后,主线程不会再访问这个key,交给异步            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-04 16:50:50
                            
                                156阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            过期键删除策略一般一个键过期了,有以下三种不同的策略可以进行删除:(1)定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作。定时删除策略对内存是最友好的:通过使用定时器,定时删除策略可以保证过期键会尽可能快地被删除,并释放过期键所占的内存缺点:对CPU时间最不友好,在过期键较多的情况下,删除过期键这一行为可能会占用相当一部分CPU            
                
         
            
            
            
            # Redis惰性删除策略实现指南
作为一名经验丰富的开发者,我很高兴能帮助你理解并实现Redis的惰性删除策略。在这篇文章中,我将详细介绍整个流程,并提供必要的代码示例和注释。
## 1. 惰性删除策略概述
惰性删除是一种数据删除策略,它在数据被访问时才检查数据是否应该被删除。这种策略可以减少不必要的数据删除操作,提高系统性能。在Redis中,惰性删除可以通过设置键的过期时间来实现。
#            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-07-28 10:03:14
                            
                                45阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Redis 设置惰性删除
## 引言
在现代的高并发场景中,缓存系统变得尤为重要。Redis作为一种开源的内存数据存储系统,广泛应用于提升数据访问速度。为了有效管理内存使用,Redis引入了惰性删除(Lazy Deletion)机制,本文将深入探讨这一机制的工作原理,并提供代码示例及状态图和序列图,以便于更好地理解如何在Redis中设置惰性删除。
## 什么是惰性删除?
惰性删除是指在            
                
         
            
            
            
            文章目录6种淘汰策略volatile-lruvolatile-ramdomvolatile-ttlallkeys-lruallkeys-randomnoeviction(默认使用)3种删除过期键策略定时删除惰性删除定期删除  Redis中通过maxmemory参数来设定内存的使用上限,当Redis使用内存达到阈值时,会根据配置文件中的设置选取要删除的key来删除,从而给新的键值留出空间。 Red            
                
         
            
            
            
                    过期的数据的删除策略                1. 惰性删除:只会在取出key的时候才对数据进行过期检查。这样对CPU最友好,但是可能会造            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-26 12:49:21
                            
                                115阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            前言Redis4.0新增了非常实用的lazy free特性,从根本上解决Big Key(主要指定元素较多集合类型Key)删除的风险。笔者在redis运维中也遇过几次Big Key删除带来可用性和性能故障。本文分为以下几节说明redis lazy free:lazy free的定义我们为什么需要lazy freelazy free的使用lazy free的监控lazy free实现的简单分析lazy            
                
         
            
            
            
            内存回收 
  要实现key过期,有三种思路。立即过期(主动淘汰),惰性过期(被动淘汰),定期过期。 立即过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。惰性过期:只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-09 18:20:21
                            
                                132阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Redis是单进程单线程模式吗下图为Redis5.0启动之后的效果。LWP为线程ID,NLWP为线程数量。可以看到,5.0的redis server共有四个线程,一个主线程48684,三个bio(background IO,后台io任务)线程,三个后台线程分别执行不同的io任务,我们重点考察删除一个key时的io线程执行。Redis增加了异步删除命令unlink,防止删除大key时阻塞主线程。其原            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-21 21:08:51
                            
                                47阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # Redis主动删除和惰性删除实现流程
## 1. 简介
在Redis中,当某个键不再需要时,我们需要进行删除操作,以释放存储空间。通常情况下,可以通过主动删除或者惰性删除来实现。
- 主动删除:在需要删除的键上调用DEL命令,直接将键从Redis中删除。
- 惰性删除:在访问键时进行判断,如果键已过期,则删除该键。
在本文中,我们将介绍如何实现Redis主动删除和惰性删除,并提供相应的代            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-11-26 03:18:19
                            
                                155阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录Predel  ------> unlinkFLUSHDB/FLUSHALL --> FLUSHDB ASYNC/FLUSHALL ASYNC异步队列AOF Sync扩展阅读PreRedis进阶-Redis对于过期键的三种清除策略我们一直说 Redis 是单线程的,这里的我们默认指的都是Redis主要的工作线程,面向开发的。 实际上 Redis 内部实并不是只有一个主...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-05-31 16:57:57
                            
                                620阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录Predel  ------> unlinkFLUSHDB/FLUSHALL --> FLUSHDB ASYNC/FLUSHALL ASYNC异步队列AOF Sync扩展阅读PreRedis进阶-Redis对于过期键的三种清除策略我们一直说 Redis 是单线程的,这里的我们默认指的都是Redis主要的工作线程,面向开发的。 实际上 Redis 内部实并不是只有一个主...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-03-28 14:35:35
                            
                                411阅读
                            
                                                                             
                 
                
                                
                    