本文想解决问题: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 查看复制偏移量 这个系统使用三个
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
pp
原创 2022-12-06 09:40:11
182阅读
会触发逐出。更新 maxmemory 参数,导致实际使用内存大于该限制。处理客户端请求,使用到内存大于内存限制。redis 逐出策略有哪些?逐出策略主要分为两个维
原创 2022-12-06 05:24:54
161阅读
文章目录一文了解:Redis过期键删除策略相关命令过期Key过期策略被动删除主动删除maxmemoryRedis采用过期策略结语 一文了解:Redis过期键删除策略Redis中所有的键都可以设置过期策略,就像是所有的键都可以上"生死簿",上了生死簿键到时间后阎王就会叉掉这个键。同一时间大量键过期,阎王就会忙不过来。同时因为Redis是单线程,导致阎王处理时间会变得很长,而且处理繁忙,R
 由于项目中使用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为柔性数组,不占用空
最近工作中一直在用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
  • 1
  • 2
  • 3
  • 4
  • 5