
Redis
文章平均质量分 96
本专栏是专门为Redis爱好者和开发者设计的,旨在分享关于Redis的深入知识、最佳实践以及高级应用技巧。无论您是初学者还是经验丰富的Redis用户,本专栏将为您提供全面的指导,从Redis的基础知识到高级主题,从性能优化到集群部署,帮助您充分发挥Redis的潜力。
shark-chili
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis系列文章全汇总
因为该系列是笔者纯个人梳理总结,所以难免在表述或者知识点说明上有所欠缺,如您发现文中存在任何需要修正之处,请不吝通过下方练习方式告知,笔者将第一时间核实更新。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。系列中比较核心且重要的知识点的文章进行简单的归类汇总,希望对你有帮助。原创 2025-05-01 23:09:30 · 741 阅读 · 0 评论 -
Redis核心知识点深度剖析:原理、机制与应用
C语言的字符串用\0收尾,在redis的使用场景下,很可能因为这个结束符导致数据被截断。C语言字符串获取长度需要进行遍历,即O(n)级别的时间复杂度。C语言进行字符串拼接总是需要预先做好分配,否则很容易出现缓冲区溢出的问题。对于不断扩大的字符串还需要反复创建新的字符数组解决问题。用于表示地理坐标信息,从而实现经纬度数据检索,它主要支持的命令有:Redis 的 GEO 模块提供了一系列用于处理地理位置数据的命令。原创 2023-12-14 08:51:48 · 1704 阅读 · 0 评论 -
Redis的有序集合底层为什么要用跳表
有了整体的思路之后,我们可以开始实现一个跳表了,首先定义一下跳表中的节点Node,从上文的演示中可以看出每一个Node存储的value值。后继节点的地址。多级索引。为了更方便统一管理Node后继节点地址和多级索引指向的元素地址,笔者在Node中设置了一个forwards数组,用于记录原始链表节点的后继节点和多级索引的后继节点指向。以下图为例,我们forwards数组长度为5,其中索引0记录的是原始链表节点的后继节点地址,而其余自底向上表示从1级索引到4级索引的后继节点指向。原创 2024-01-21 21:27:30 · 88 阅读 · 0 评论 -
来聊聊Redis中的字符串对象的设计
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。这种编码格式的字符串就是专门用于存储这种短字符串的,进行字符串足够小,所以在进行内存空间分配时,类型的字符串,进行内存空间时需要两次的分配过程,无论在内存管理还是对象操作上都没有。进行了详细的介绍了,而本文我将从顶层的视角来聊聊。原创 2024-05-31 09:18:17 · 86 阅读 · 0 评论 -
来聊聊Redis简单动态字符串SDS
sds数组自身通过buf字段记录字符数组,通过len记录当前字符串长度,以及通过free记录当前buf数组的空闲空间,那么问题来了为什么会有free这个字段呢?假设我们使用sds创建一个空间为5的数组,操作过程中修改了字符串内容将字符串Redis改为Res,sds的做法除了修改buf数组的字符串以外,还会同步的维护长度len和free字段,通过free字段的维护确保后续分配2个字符串可以直接利用现有内存而无需在创建全新的数组存放字符的操作,这也就是所谓的惰性释放的设计思想:对于这段结构的定义,我们可以。原创 2024-05-29 09:05:45 · 113 阅读 · 0 评论 -
能不能给我讲讲redis中的列表
源码的角度直接分析列表操作指令,因为大部分指令操作细节区别不是很大,同时为了更专注于列表逻辑的分析,所以本文笔者将以双向链表这个数据结构为核心对。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。的源码分析,以链表为例讲解我们的操作,实际上其底层就是拿到链表的首元素并获取这个元素的值赋值给。原创 2024-10-08 08:43:09 · 262 阅读 · 0 评论 -
Redisson全面解析:从使用方法到工作原理的深度探索
Redisson是基于原生redis操作指令上进一步的封装,屏蔽了redis数据结构的实现细节,开发可以像操作普通java对象一样使用redis,而本文将针对Redisson中各种使用的数据结构和工具包使用及其实现进行详尽的分析,希望对你有帮助。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。原创 2025-02-08 23:47:45 · 1173 阅读 · 0 评论 -
深度剖析 Redisson 分布式锁:原理、实现与应用实践
红锁是redis作者Antirez提供的一个多节点分布式锁的算法,主要用于解决集群环境下分布式锁一致性问题,其做法大体思路如下客户端设置基于redis服务端获取起始时间,并基于超时时间算出取锁最长等待时间。基于这个时间点向redis集群节点发起上锁请求。当得到半数以上节点同一之后意为取锁成功。执行业务操作。对此我们也给出redissontry{//....原创 2025-02-08 23:46:00 · 957 阅读 · 0 评论 -
一文读懂Redis RDB持久化:策略、配置与应用
RDB持久化机制是将内存中的数据生成快照并持久化到磁盘的过程,RDB可以通过手动或者自动。原创 2023-12-14 08:56:59 · 2801 阅读 · 0 评论 -
解锁Redis发布订阅模式:通过实践演示挖掘消息通信潜能
redis发布订阅是一种解耦生产者和消费者一种消息通信模式,订阅者通过订阅channel。原创 2023-12-18 10:32:53 · 1520 阅读 · 0 评论 -
探索数据结构之美——有序集合的内部机制
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。当有序集合删除元素时,除了将该元素从字典中移除,还需要将跳表中关于该元素的指针和索引全部移除,如下图,假设我们要删除。的源码如下所示,以跳表结构为例,该方法首先通过字典定位到这个元素的score,然后通过跳表的。原创 2024-12-30 08:43:44 · 2044 阅读 · 0 评论 -
高效索引的秘密:redis跳表设计与实现
Redis 的跳表设计通过多层指针的巧妙运用,不仅实现了高效的查找、插入和删除操作,还保持了较低的空间开销。这种数据结构的优势在于它能够在平均时间复杂度为 O(log n) 的情况下完成上述操作,这使得 Redis 在处理大量数据时依然能够保持高性能。此外,跳表的设计简单直观,易于实现和维护,这也进一步增强了其在实际应用中的吸引力。总之,Redis 跳表的成功案例证明了合理选择和优化数据结构对于构建高效系统的重要性。我是sharkchili优快云 Java 领域博客专家mini-redis。原创 2024-12-11 08:56:43 · 1196 阅读 · 0 评论 -
聊聊redis字典指令操作
为例,除去指令和key以外,键值对都是两两配对的,这意味着我们传入指令的参数必须是双数,所以hmsetCommand进行校验时会判断参数是否为双数如果不是则抛出异常。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。限定为到字典,然后遍历字典的每一个键值对返回,这里我们也直接给出源码,可以看到。原创 2024-10-15 08:43:26 · 1020 阅读 · 0 评论 -
来聊聊redis集群数据迁移
redis集群提供16384个slot,我们可以按需分配给节点上,后续进行键值对存储时,我们就可以按照算法将键值对存到对应slot上的redis服务器上:集群节点本质就是通过slots这个数组记录当前节点的所管理的情况,这里我们可以看到slots是一个char数组,长度为char占1个字节,每个字节8位。每个char可以记录8个slot的情况,如果是自己的slot则对应char的某一个位置记录为1:我们以node-1。原创 2024-07-23 08:54:32 · 1259 阅读 · 0 评论 -
redis集群中如何处理非本节点的slot
个槽,它会因为我们集群个数配置的不同而分配不同的slot给各个节点,而这篇文章就来聊聊当某个节点处理到非它所负责的slot时是如何处理的,这一点很好的体现了。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。应该是要存放到节点1中,对此节点2的做法是查看自己所维护的节点列表是否有负责该。原创 2024-07-22 08:35:36 · 657 阅读 · 0 评论 -
来聊聊去中心化Redis集群节点如何完成通信
这个存活节点后续和其他节点通信时,就会将当前新添加的节点4发送出去,由此其他节点收到这个消息并存储下来,经过各个节点的不断反复通信,这个集群中的各个节点就会拥有集群中所有节点的信息。协议,默认情况下我们的当前有3个节点的集群,各个节点彼此按照通信要求发送自己的信息和与自己保持交流的节点,由此将有限的资源共享出去构成一个集群。协议,该协议是分布式集群的一种通信协议,我们都知道管理集群的方式有中心化和去中心化两种方式,中心化的方式是通过第一个第三方的管理中心,例如。原创 2024-07-19 08:40:17 · 741 阅读 · 0 评论 -
来聊聊redis的发布订阅设计与实现
自此我们们将redis发布订阅的设计与实现,本质上就是通过一个个链表管理订阅者,通过pub指令定位到channel后将消息遍历发送到对应客户端socket上,这里笔者也简单的补充一句,从源码中我们可以看到redis的发布订阅模型没有持久化机制,所以对于可靠性要求高的场景笔者还是不太建议使用pub/sub。发布订阅源码的设计与实现,通过本文的阅读,你将会对发布订阅模型的设计思想以及对哨兵间选举通信的流程有着更底层的视角。的客户端追加到链表中。中的哨兵就很好的利用这种模式进行沟通和选举等各个工作,当我们的。原创 2024-07-18 08:30:52 · 803 阅读 · 0 评论 -
来聊聊Redis哨兵如何主观认定下线
对于这个时间设置做了一个巧妙的设计,我们都知道哨兵判定节点下线后就会发起选举,为了避免哨兵集群所有节点同时发起选举投票从而得到相同票数的情况而导致本轮选举失败而进行反复选举的情况,基于上文我们了解哨兵时间事件执行的大体流程,接下来我们会针对每一个流程进行详细的分析,首先我们先来了解一下对于断线重连检查方法,对于断线重连检查,因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。协议,这个是分布式系统中保证高可用的选举协议。原创 2024-07-17 08:39:56 · 725 阅读 · 0 评论 -
聊聊Redis哨兵选举与故障转移的实现
上一篇文章我们将哨兵主观下线的核心流程都分析完成,这一篇我们将接着之前的思路,将哨兵获取客观下线结果并结合raft协议完成哨兵leader选举完成故障转移的流程分析完成,希望对你有帮助。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。下线的看法,如果累加到的哨兵对于下线的看法大于或者等于我们配置。原创 2024-07-16 08:39:38 · 1080 阅读 · 0 评论 -
Redis哨兵是如何完成初始化的
本系列终于更新到哨兵模块的介绍,由于哨兵模块涉及节点通信和选举等流程,所以笔者将其分为3个篇章进行剖析,而本文笔者将从源码分析的角度介绍一下redis哨兵是如何完成初始化的。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。,是个不断在硬核技术上作死的技术人,是。原创 2024-07-15 08:40:31 · 707 阅读 · 0 评论 -
以从节点的角度看看Redis主从复制的实现
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。近期工作遇到比较奇葩的规划,个人思绪略有惆怅,希望通过整理一些技术小文缓解心中的压抑,我们都知道。的状态是否是待连接,如果是则通过主库的ip及端口号信息发起连接,并在连接期间将状态设置为。发起非阻塞连接,并创建一个连接成功后的回调处理事件。原创 2024-07-12 09:07:37 · 639 阅读 · 0 评论 -
Redis如何高效实现定时任务
时间事件可以是单次到期执行销毁,也可以是定时任务,对此redis对于时间事件统一封装为对象,通过id来唯一标识一个事件,结合when_sec和when_ms记录任务到期执行的秒和分,而执行时间事件的函数也是交由timeProc指针所指向的函数执行。原创 2024-07-11 09:00:10 · 1191 阅读 · 0 评论 -
来聊聊Redis持久化AOF管道通信的设计
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。管道通信的方式实现,通过管道通信的方式实现实时数据发送,对应子进程收到这些指令对应的字符串之后,就会将其写入。管道通信通常都是单向的,即收发通道需要交由两个数组空间才能实现,例如父进程写入客户端实时指令到通道只能通过。原创 2024-07-10 08:54:17 · 865 阅读 · 0 评论 -
来聊聊Redis的AOF重写机制
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。文件,基于del等指令将抹去一些无用的键值对,但是笔者查看源码后发现,此类说法有着严重的错误,所以笔者就基于此文来详细讨论一些。,可以看到其内部就是生成一个临时文件,然后遍历数据库中的键值对,根据键值对的类型生成相应的。以本文为例,假设我们。原创 2024-07-09 08:49:05 · 1280 阅读 · 0 评论 -
来聊聊redis的AOF写入
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。的解读笔者会分为3篇进行解读,而本文会解读的是AOF写入的核心流程。,其内部逻辑最核心的逻辑就是将指令字符串添加到。的定义中就可以看到这个缓冲区的定义即一个。对应的将文件写入文件前的解析到的字符串,的写入到落盘的整体流程,希望对你有帮助。原创 2024-07-05 08:30:00 · 886 阅读 · 0 评论 -
Redis RDB持久化源码深度解析:从原理到实现
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。文件会得到一堆类型乱码的内容,我们无法知晓写入的信息,我们可以直接键入。为保证读者更直观的了解redis持久化写入的内容,我们可以删除本地。文件中看到该方法的实现,可以看到为了避免脏写等问题,函数在看到这段逻辑,它会遍历出我们配置的保存间隔配置。原创 2024-07-03 14:46:51 · 630 阅读 · 0 评论 -
聊聊Redis中缓存淘汰算法的实现
的核心实现,可以看到其内部会检查当前使用的内存并查看是否超过最大内存上限,如果超过了则根据策略定位数据,则进入循环每次淘汰一批元素直到内存空间充裕为止,以笔者为例配置的是。通过上文的解析我们了解redis缓存淘汰算法的基本设计思路,我们不妨通过源码的方式加以印证,当调用set等指令添加新的键值对的时候,redis就会给这个键值对的。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。原创 2024-07-02 13:44:55 · 689 阅读 · 0 评论 -
来聊聊Redis定期删除策略的设计与实现
以上便是笔者对于redis过期键值删除策略设计的全部源码分析,可以看到由于redis单线程的设计,对于每一项操作都在时间和空间上做了极致的设计和实现,希望对你有帮助。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。对于过期键的删除策略,接下来我们就以源码的方式去印证这几点,可以看到。原创 2024-07-01 15:11:45 · 1037 阅读 · 0 评论 -
来聊聊redis数据库的设计与实现
是内存中间件,对于这个观点,我其实不是很认同,从使用和redis工作机制来看,它无非是基于内存实现快速的非关系型数据的操作而已,然后在一定的时间段进行一次刷盘持久化,所以从我的认知来看,我觉得。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。得到相同的哈希值则定位相同的索引空间,从而造成碰撞,我们通过拉链法解决冲突的情况,于是我们的查询的时间复杂度有时候可能是。的存储是通过哈希表的哈希算法实现的,由此尽可能的。原创 2024-06-28 08:54:35 · 1143 阅读 · 0 评论 -
来聊聊Redis客户端的概念
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。自此我们从redis客户端创建和指令交互的流程详细的分析的redis客户端这个结构体在redis中的作用,希望对你有帮助。了解了客户端的基本结构之后,我们就从客户端发起连接并建立通信的整个过程了解一下客户端初始化的逻辑,当。原创 2024-06-27 14:30:48 · 979 阅读 · 0 评论 -
来聊聊Redis所实现的Reactor模型
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。,注意笔者所强调的非阻塞获取,这也就是为什么redis仅仅用一个主线程即可实现Reactor模型的原因所在。的调用,该方法会为当前服务端socket套接字的文件描述符绑定读事件的处理器。完成读写事件的处理,由此实现尽可能少的线程处理尽可能多的连接。原创 2024-06-25 13:16:07 · 1158 阅读 · 0 评论 -
如何理解redis是单线程的
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。中主线程和IO任务的线程都以图解和源码印证的方式分析完成了,以笔者的理解,设计者所说的。从该列表中取出自己绑定的任务进行异步消费,通过这种简单的多线程模式,保证了耗时的。了解的任务消费的源码之后,我们再来看看任务的投递的逻辑,我们以。原创 2024-06-24 10:19:32 · 986 阅读 · 0 评论 -
来聊聊redis文件事件驱动的设计
即可看到事件循环框架的核心实现,其本质就是完成事件循环框架的初始化,通过上一步传入的大小创建创建socket的数组空间,记录每一个接入的客户端。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。处理器的实现逻辑,可以看到其内部的处理逻辑本质获取套接字的文件描述符,并基于这个。原创 2024-06-21 09:46:37 · 12144 阅读 · 0 评论 -
聊聊redis中的有序集合
有序集合的实现可以说是集大成于一身,它之所以支持单元素查询和范围查询,是字典(dict)和跳表(skipList)的组合结果,它将带有权重的元素指针分别交给字典和跳表进行管理。Redis为什么用跳表实现有序集合当我们需要通过元素名称定位其权重时,我们可以通过哈希算法到字典中定位到对应的元素,以下图为例,若我们希望定位到apple这个元素的权重时,可以直接计算apple的哈希值结合哈希算法即可实现O(1)级别的元素定位。apple节点的2级索引。apple节点的1级索引。通过banana。原创 2024-06-19 10:05:12 · 841 阅读 · 0 评论 -
Redis核心数据结构字典核心操作实践与解析
本文基于Redis源码,详细解析了其底层字典数据结构的设计与实现。Redis字典采用哈希表存储键值对,通过链地址法解决哈希冲突,并使用双哈希表机制进行渐进式哈希,以应对频繁的哈希碰撞。文章首先介绍了哈希表的基本结构,包括table数组、size字段和sizemask掩码,并通过示例展示了键值对的存储过程。接着,文章深入探讨了字典的双哈希表设计,解释了渐进式哈希的工作原理及其在扩容时的应用。最后,文章分析了字典的初始化、元素插入以及渐进式哈希的实现细节,展示了Redis如何通过优化哈希表结构来提升性能。通过源原创 2024-06-17 10:21:23 · 179 阅读 · 0 评论 -
基于Gdb快速上手调试Redis
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。对于不需要的断点,我们可以用d指令进行删除,例如断点2即对swap函数的断点我们不需要,可直接键入。工具不同,终端调试工具无法一眼看到所有的代码,如果我们希望看到当前的代码信息,需要通过l即。原创 2024-06-07 09:04:42 · 702 阅读 · 0 评论 -
聊聊我是如何调试redis源码的
因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。官方仓库给出的提示,redis默认情况下采用jemalloc 进行编译和链接,所以对于上述问题我们可以直接采用指令。源码解读系列的开篇,感兴趣的读者可以按照笔者的配置步骤搭建一套。两个文件配置,tasks.json配置如下,只需指定编译的。原创 2024-05-28 09:55:39 · 1098 阅读 · 0 评论 -
Redis持久化技术AOF要点与详细解答
AOF用于将Redis服务器收到的写操作追加到日志文件,通过该机制可以保证服务器重启后依然可以依靠日志文件恢复数据。收到客户端的写入命令(例如SET、DEL等)之后,它会将命令写入AOF缓冲区。redis服务器会定期或者在特定条件下,将AOF缓冲区的数据以追加的方式写到日志文件末尾,这种写入的操作可以是同步的,也可以是异步的,具体看我们配置的刷盘机制。若日志文件超过配置文件的大小(由配置参数和。原创 2023-12-13 08:34:50 · 4737 阅读 · 0 评论 -
掌握 Redis 事务,提升数据处理效率的必备秘籍
那么,如何在项目中正确、高效地使用Redis事务呢?,该锁的总是乐观的认为自己操作的数据不会被他人修改,进行修改操作时不会针对临界资源上锁,而是修改的时候判断一下当前去数据版本号和修改的数据是否一致,通过比对版本号是否一致判断是否被人修改,只要版本号一致当前线程修改操作就会生效,常见的解决方案有悲观锁和乐观锁,悲观锁(Pessimistic Lock)的原理是认为自己操作的数据很可能会被他人修改,所以对临界资源操作都持有悲观的态度,每次进行操作前都会对数据上锁保证互斥,常见的关系型数据库。原创 2021-10-21 12:59:37 · 8610 阅读 · 0 评论 -
基于Jedis来探讨池化技术
上文我们提到了池化技术的重要性,接下来我们就基于apache客户端来了解一下不同的池化技术运用方式之间的差距。原创 2023-12-11 12:36:47 · 2063 阅读 · 1 评论