本文想解决的问题:1. redis 如何感知并触发 key 过期的?2. 如何防止大规模的 key            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-12-07 09:11:57
                            
                                242阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            ###什么是主从复制一个master可以有多个slave一个slave只能有一个master数据流是单向的,master到slave###全量复制和部分复制 #####run id 查看复制偏移量(用来比对两边数据同步问题,相差不能太大)插一个命令redis-cli -p 6379 info server | grep run查看redis运行id 
   查看复制偏移量 
   这个系统使用三个            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-19 08:25:27
                            
                                38阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Redis 源码解读之 Rehash 的调用时机
背景和问题本文想要解决的问题什么时机触发 Rehash 操作?什么时机实际执行 Rehash 函数?结论什么时机触发 Rehash 操作?缩容: Redis 定时任务 serverCron 会在每个周期内检查 bucket 的使用情况。当存放 key 的数量和总 bucket 数的比例小于 HASHTABLE_MIN_FILL(10%            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-12-06 05:24:03
                            
                                230阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # 实现 Redis Expire 源码分析
在这篇文章中,我将带领刚入行的小白了解如何实现 Redis 的过期(expire)功能的源码。这一过程包括了解 Redis 是如何设置键的过期时间的,并通过实际代码实现该功能。
## 1. 理解 Redis Expire 流程
在开始具体的代码之前,我们首先要了解实现 Redis expire 的基本流程。可以通过下表来展示这一流程。
| 步骤            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-08-15 09:30:54
                            
                                41阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            我之前统计过我们线上某redis数据被访问的时间分布,大概90%的请求只会访问最新15分钟的数据,99%的请求访问最新1小时的数据,只有不到千分之一的请求会访问超过1天的数据。我们之前这份数据存了两天(近500g内存数据),如果算上主备的话用掉了120多个Redis实例(一个实例8g内存),光把过期时间从2天改成1天就能省下60多个redis实例,而且对原业务也没有啥太大影响。当然Redis已经实            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-01-25 13:29:15
                            
                                329阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            我之前统计过我们线上某redis数据被访问的时间分布,大概90%的请求只会访问最新15分钟的数据,99%的请求            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-07-20 15:45:59
                            
                                202阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            i            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-12-06 09:40:11
                            
                                182阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            会触发逐出。更新 maxmemory 参数,导致实际使用内存大于该限制。处理客户端请求,使用到的内存大于内存限制。redis 逐出策略有哪些?逐出策略主要分为两个维            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-12-06 05:24:54
                            
                                161阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文章目录一文了解:Redis过期键删除策略相关命令过期Key过期策略被动删除主动删除maxmemoryRedis采用的过期策略结语 一文了解:Redis过期键删除策略Redis中所有的键都可以设置过期策略,就像是所有的键都可以上"生死簿",上了生死簿的键到时间后阎王就会叉掉这个键。同一时间大量的键过期,阎王就会忙不过来。同时因为Redis是单线程的,导致阎王的处理时间会变得很长,而且处理繁忙,R            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-03 12:57:01
                            
                                142阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             由于项目中使用Redis,所以使用它的Java客户端Jedis也有大半年的时间(后续会分享经验)。 最近看了一下源码,源码清晰、流畅、简洁,学到了不少东西,在此分享一下。(源码地址:https://github.com/xetorthio/jedis)  协议  和Redis Server通信的协议规则都在redis.clients.jedi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-28 13:28:24
                            
                                51阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Redis 源码阅读篇一、Redis源码目录结构首先,我们来了解下 Redis 的目录结构。 为什么要从目录结构开始了解呢?其实,这是我自己阅读代码的一个小诀窍:在学习一个 大型系统软件的代码时,要想快速地对代码有个初步认知,了解系统源码的整体目录结构就是一个行之有效的方法。这是因为,系统开发者通常会把完成同一或相近功能的代码文 件,按目录结构来组织。能划归到同一个目录下的代码文件,一般都是具有相            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-10 22:18:19
                            
                                41阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            从github上下载redis的源代码,地址为 https://github.com/antirez/redis.gitmac 事先安装了CLion,导入redis源码工程如下,然后切换到redis 6.0 第2章 简单动态字符串实现类为sds.h 和 sds.c struct sds {
        int len; // buf中已占用字节数            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-08 13:26:43
                            
                                48阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、redis源码编译redis可以直接在官网下载(本文使用版本 3.0.7):https://redis.io/download安装:$ tar xzf redis-3.0.7.tar.gz
$ cd redis-3.0.7
$ makemake执行以后主要编译产物在src/redis-server src/redis-cli如果想把redis-server直接install到可执行目录/usr            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-25 22:25:25
                            
                                51阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            EXPIREEXPIRE key seconds为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。在 Redis 中,带有生存时间的 key 被称为『易失的』(volatile)。生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET 命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-28 15:51:24
                            
                                110阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            如果缓存出现击穿,雪崩,穿透等情况,会造成大量请求积压到数据库层,如果请求的并发量很大,就会导致数据库宕机或是故障,这就是很严重的生产事故了。导致缓存雪崩的原因:第一:缓存中有大量的数据同时过期,导致大量请求无法处理,出现缓存缺失,然后会将请求发送到数据库,从数据库中读取数据。如果应用的并发请求量很大,那么数据库的压力也就很大,这会进一步影响到数据库的其他正常业务请求处理。解决方案:第一种如果业务            
                
         
            
            
            
            今天遇到了一个前同事挖的坑,刷新缓存中商品信息时先让key过期,然后从数据库里取最新数据然后再放到缓存中,他是这样写的redisTemplate.expire(CacheConst.GOOGS_PREFIX,1,TimeUnit.MILLISECONDS);设置key过期为一毫秒,导致缓存中有时没有商品信息,因为在这一毫秒内有可能已经从数据库中取到了最新数据,并且又放到了缓存中,一毫秒过后key过            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-11 21:11:32
                            
                                43阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            今日起,阅读redis源码,话不多说,下载源码..................ok,开始。目录1:从数据结构开始(图为源码,附带个人简单分析):1:从数据结构开始(图为源码,附带个人简单分析):A:动态字符串         文件: sds.h sds.c前言:s-(sizeof(struct sdshdr))的解释为buf为柔性数组,不占用空            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-10 15:21:05
                            
                                161阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            最近工作中一直在用redis进行缓存功能的实现,redis的源码虽然只有一万多行,但是确实值得研究一下,以下个人的一点研究和看法(本来打算用图表示,实在找不到一种好的画图工具来描述,因此就用文字描述了),希望能跟各位共勉之。 
一、1.构建JedisShardInfo列表List<JedisShardInfo> jedisShardInfoList,其中JedisShardInfo包含            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-15 18:36:33
                            
                                36阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            [url=http://diaocow.iteye.com/blog/1938032]《Redis源码学习笔记》文章列表[/url] 
[color=red]由于图片较大,缩放较为模糊,请双击打开查看原图 ^_^[/color] 
在[url=http://diaocow.iteye.com/blog/1935050]主从复制[/url]过程中,我们提到过            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-06 20:44:45
                            
                                71阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            看了一些关于redis 的相关文章,例如redis为什么这么快、redis的原理、redis的数据结构这些,但其只是从整体的结构来说明,并没有梳理源码的具体流程,但我不是很喜欢一些黑盒的东西,所以我们这一篇就通过跑redis的源码,来追踪redis源码中的一些数据结构。这篇文章的源码是基于redis 3.0版本,同时源码是直接从github上面clone下来的别人已经处理好的redis代码(win            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-07 10:14:44
                            
                                1486阅读
                            
                                                                             
                 
                
                                
                    