近来在研读redis3.2.9的源码,虽然网上已有许多redis的源码解读文章,但大都不成系统,且纸上学来终觉浅,遂有该系列博文。部分知识点参照了黄建宏的《Redis设计与实现》。定义在自定义的基础数据结构的基础上,redis 通过 redisObject 封装整合成了对外暴露的5中数据结构。  首先看看 redisObject 的定义: #define LRU_BITS 24
typedef s            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-15 18:31:31
                            
                                79阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            第一节.参考 先说一句,redis的源码写的很优雅,很漂亮.代码比较规范,代码量不大.整体分析完帖子里面的源码过程不到三个小时.第二节.架构 一.Reactor模式  结构如下图:  我理解,就是一个生产消费模式,只是不需要队列,直接函数分发,叫分发模式更容易理解。或者类似观察者,每个观 察者关注的事件不一样。NIO或者Netty的网络编程中经常使用这种模式            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-09 21:52:04
                            
                                107阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.为什么使用redis?redis是一种典型的no-sql 即非关系数据库 像python的字典一样 存储key-value键值对 工作在memory中所以很适合用来充当整个互联网架构中各级之间的cache 比如lvs的4层转发层 nginx的7层代理层尤其是lnmp架构应用层如php-fpm或者是Tomcat到mysql之间 做一个cache 以减轻db的压力因为有相当一部分的数据 只是简单的            
                
         
            
            
            
            # Windows下阅读Redis源码指南
## 引言
Redis作为一个高性能的开源内存数据库,因其简单易用而受到广泛欢迎。然而,很多开发者在使用Redis的过程中,对其内部实现并不十分了解。本文将带领大家在Windows环境下阅读Redis源码,通过示例代码加深理解。
## 环境配置
首先,我们需要在Windows上配置Redis的开发环境。虽然Redis主要在Linux上运行,但我们            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-09-20 15:22:43
                            
                                44阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Redis Windows源码编译指南
## 1. 引言
在本篇文章中,我将向你介绍如何在Windows操作系统上编译Redis的源代码。作为一名经验丰富的开发者,我将帮助你了解整个编译过程,并提供每个步骤所需的代码和解释。本文旨在帮助你快速入门Redis的源码编译。
## 2. 编译流程概述
在开始之前,让我们先来了解整个编译流程的步骤。下表展示了Redis Windows源码编译的流程            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-02-10 04:37:36
                            
                                182阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            简单动态字符串Redis是用C语言写的,但是Redis并没有使用C的字符串表示(C是字符串是以\0空字符结尾的字符数组),而是自己构建了一种简单动态字符串(simple dynamic string,SDS)的抽象类型,并作为Redis的默认字符串表示 在Redis中,包含字符串值的键值对底层都是用SDS实现。代码实现struct sdshdr {
    // 记录buf数组中已使用字节的数量,            
                
         
            
            
            
            # 如何在Windows环境下编译Redis源码
## 引言
作为一名经验丰富的开发者,掌握如何编译Redis源码是非常重要的。在Windows环境下编译Redis源码可以帮助我们更好地理解Redis的运行机制,并且能够进行自定义的修改和扩展。
## 流程图
```mermaid
flowchart TD
    A[下载Redis源码] --> B[安装Visual Studio]            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-07-14 04:40:50
                            
                                262阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            项目地址:https://github.com/doocs/source-code-hunterSDS(Simple Dynamic Strings, 简单动态字符串)是 Redis 的一种基本数据结构,主要是用于存储字符串和整数。 这篇文章里,我们就来探讨一下 Redis SDS 这种数据结构的底层实现原理。学习之前,首先我们要明确,Redis 是一个使用 C 语言编写的键值对存储系统            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-04 22:41:12
                            
                                42阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            网站文章通常都会有个阅读数,最简单的方法就是每访问一次就加一,这看起来很简单,update一下就可以了。如果网站访问量很大呢,每天有几十万次的访问呢,一秒钟就要update几次服务器,效率就很低了。而且,数据库update的时候会锁表,还会影响到读操作,看来只能用缓存了。Memcached是会丢失数据的,不合适;Redis是内存型数据库,可以持久化,就用它了。Redis运行的时候,是把数据都保存            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-23 10:18:24
                            
                                71阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一直有打算写篇关于redis源代码分析的文章,一直很忙,还好最近公司终于闲了一点,总算有点时间学习了,于是终于可以兑现承诺了,废话就到此吧,开始我们的源代码分析,在文章的开头我们把所有服务端文件列出来,并且标示出其作用:adlist.c //双向链表ae.c //事件驱动ae_epoll.c //epoll模型ae_kqueue.c //kqueue模型( freebsd)ae_select.c            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-10 10:07:38
                            
                                33阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            背景clion使用cmake来管理编译redis源码,而redis源码本身使用原生的make,因此直接将redis源码导入clion无法直接运行,需要配置cmake。写c程序大体步骤为:1).用编辑器编写源代码,如.c文件。2).用编译器编译代码生成目标文件,如.o。3).用链接器连接目标代码生成可执行文件,如.exe。但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-22 22:45:45
                            
                                106阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            redis现在在分布式上的应用十分的普遍,作为一个高效的DB,其并发吞吐数据的能力十分的优秀,所以通过源码,可以让我们详细的了解相关的知识和实现细节,我希望能坚持下去。在六月份之前弄清楚redis的相关框架知识,能够提升自己的代码能力。首先redis 的list声明了list的相关结构,代码如下:typedef struct listNode {
    // 前驱节点
    struct l            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-13 14:58:19
                            
                                20阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一:Linux上安装Redis第一步:下载redis第二步:使用Xftp工具上传redis-5.0.2.tar.gz到linux 系统。 第三步:解压redis-5.0.2.tar.gz到/opt目录第四步:编译redis,进入解压目录,并且执行make命令:  有的可能直接安装完成:就不用执行下面的步骤了报错:gcc命令未找到第五步:安装gcc。什么是 gcc ?g            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-02 22:31:06
                            
                                125阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            当集群模式中需要扩缩容时,需要向集群中添加/删除节点,本节就来介绍下这个过程。添加节点当把节点A加入集群时,需要运维工具redis-cli向集群中任意节点发送Cluster meet < ip > < port > 命令:void clusterCommand(client *c) {
	...
	if (!strcasecmp(c->argv[1]->ptr,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-04 16:52:12
                            
                                92阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            上一篇解读了一下SDS,本来觉得完了,但之后想想感觉少点什么,现在我们从使用的角度去梳理一下,大家想想对于字符串, 我们经常使用的有哪几个方法呢?这些方法又是怎么实现的?在研究上面的几个方法之前我们先来了解一下redisObject对象,源码在redis.h中,以下是源码:typedef struct redisObject {
    unsigned type:4; //对象类型,string            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-07 19:16:26
                            
                                134阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            redis 的源码编译安装 首先我们下载软件包到指定的目录下 tar -zxvf redis-2.8.19.tar.gz cd redis-2.8.19 make make PREFIX=/usr/local/redis install mkdir /usr/local/redis/etc/ cp redis.conf /usr/local/redis/etc/ cd /usr            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-29 14:57:18
                            
                                98阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录简介结构定义和详细介绍zskiplist 结构zskiplistnode结构操作API创建随机算法插入获取节点排名释放删除 参考文章  图解比较详细: 图解redis跳跃表   简介跳跃表是Redis zset的底层实现之一,zset在member较多时会采用跳跃表作为底层实现,它在添加、删除、查找节点上都拥有与红黑树相当的性能,它其实说白了就是一种特殊的链表,链表的每个节点存了不同的“            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-24 17:12:35
                            
                                8阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            三、JedisCluster模块源码解析1、JedisCluster类结构由于Jedis本身不是线程安全的,所以选择使用对象池JedisPool来保证线程安全在JedisClusterInfoCache中,保存了节点和槽位的一一对应关系,为每个节点建立一个对象JedisPool,并保存在map中。这个类主要用于保存集群的配置信息2、JedisCluster的初始化public class Jedi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-11 20:10:49
                            
                                113阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一,redis内存管理介绍二,redis内存管理源码分析redis封装是为了屏蔽底层平台的差异,同时方便自己实现相关的函数,我们可以通过src/zmalloc.h 文件中的相关宏定义来分析redis是怎么实现底层平台差异的屏蔽的,zmalloc.h 中相关宏声明如下:#if defined(USE_TCMALLOC)
#define ZMALLOC_LIB ("tcmalloc-" __xstr(            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-26 12:05:30
                            
                                46阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            本文将从以下几个方面介绍前言字典结构图字典结构定义字典操作源码分析命令操作字典   
 前言在上一篇文章Redis 数据结构-字符串源码分析分析了字符串的一个实现过程,现在来看下另外一种数据结构字典的实现原理,字典这种数据结构并不是 Redis 那几种基本数据结构,但是 hash , sets 和 sorted sets 这几种数据结构在底层都是使用字典来实现的(并不仅仅是字典            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-04 01:22:33
                            
                                34阅读
                            
                                                                             
                 
                
                                
                    