近来在研读redis3.2.9的源码,虽然网上已有许多redis源码解读文章,但大都不成系统,且纸上学来终觉浅,遂有该系列博文。部分知识点参照了黄建宏的《Redis设计与实现》。定义在自定义的基础数据结构的基础上,redis 通过 redisObject 封装整合成了对外暴露的5中数据结构。 首先看看 redisObject 的定义: #define LRU_BITS 24 typedef s
转载 2023-08-15 18:31:31
57阅读
第一节.参考 先说一句,redis源码写的很优雅,很漂亮.代码比较规范,代码量不大.整体分析完帖子里面的源码过程不到三个小时.第二节.架构 一.Reactor模式  结构如下图:  我理解,就是一个生产消费模式,只是不需要队列,直接函数分发,叫分发模式更容易理解。或者类似观察者,每个观 察者关注的事件不一样。NIO或者Netty的网络编程中经常使用这种模式
转载 2023-07-09 21:52:04
92阅读
# Redis Windows源码编译指南 ## 1. 引言 在本篇文章中,我将向你介绍如何在Windows操作系统上编译Redis的源代码。作为一名经验丰富的开发者,我将帮助你了解整个编译过程,并提供每个步骤所需的代码和解释。本文旨在帮助你快速入门Redis源码编译。 ## 2. 编译流程概述 在开始之前,让我们先来了解整个编译流程的步骤。下表展示了Redis Windows源码编译的流程
原创 6月前
136阅读
# 如何在Windows环境下编译Redis源码 ## 引言 作为一名经验丰富的开发者,掌握如何编译Redis源码是非常重要的。在Windows环境下编译Redis源码可以帮助我们更好地理解Redis的运行机制,并且能够进行自定义的修改和扩展。 ## 流程图 ```mermaid flowchart TD A[下载Redis源码] --> B[安装Visual Studio]
原创 1月前
88阅读
项目地址:https://github.com/doocs/source-code-hunterSDS(Simple Dynamic Strings, 简单动态字符串)是 Redis 的一种基本数据结构,主要是用于存储字符串和整数。 这篇文章里,我们就来探讨一下 Redis SDS 这种数据结构的底层实现原理。学习之前,首先我们要明确,Redis 是一个使用 C 语言编写的键值对存储系统
网站文章通常都会有个阅读数,最简单的方法就是每访问一次就加一,这看起来很简单,update一下就可以了。如果网站访问量很大呢,每天有几十万次的访问呢,一秒钟就要update几次服务器,效率就很低了。而且,数据库update的时候会锁表,还会影响到读操作,看来只能用缓存了。Memcached是会丢失数据的,不合适;Redis是内存型数据库,可以持久化,就用它了。Redis运行的时候,是把数据都保存
一直有打算写篇关于redis源代码分析的文章,一直很忙,还好最近公司终于闲了一点,总算有点时间学习了,于是终于可以兑现承诺了,废话就到此吧,开始我们的源代码分析,在文章的开头我们把所有服务端文件列出来,并且标示出其作用:adlist.c //双向链表ae.c //事件驱动ae_epoll.c //epoll模型ae_kqueue.c //kqueue模型( freebsd)ae_select.c
redis现在在分布式上的应用十分的普遍,作为一个高效的DB,其并发吞吐数据的能力十分的优秀,所以通过源码,可以让我们详细的了解相关的知识和实现细节,我希望能坚持下去。在六月份之前弄清楚redis的相关框架知识,能够提升自己的代码能力。首先redis 的list声明了list的相关结构,代码如下:typedef struct listNode { // 前驱节点 struct l
转载 6月前
10阅读
一:Linux上安装Redis第一步:下载redis第二步:使用Xftp工具上传redis-5.0.2.tar.gz到linux 系统。 第三步:解压redis-5.0.2.tar.gz到/opt目录第四步:编译redis,进入解压目录,并且执行make命令:  有的可能直接安装完成:就不用执行下面的步骤了报错:gcc命令未找到第五步:安装gcc。什么是 gcc ?g
一,redis内存管理介绍二,redis内存管理源码分析redis封装是为了屏蔽底层平台的差异,同时方便自己实现相关的函数,我们可以通过src/zmalloc.h 文件中的相关宏定义来分析redis是怎么实现底层平台差异的屏蔽的,zmalloc.h 中相关宏声明如下:#if defined(USE_TCMALLOC) #define ZMALLOC_LIB ("tcmalloc-" __xstr(
从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
46阅读
一、set方法1,先去调用底层的connect方法,去进行一个socket连接 connect 从源码中可以看到是通过CP协议与redis建立socket连接,此时可以将redis理解为一个serverSocket。 2.手写模拟一个redispublic class ServerSocketRedis { public static void main(S
转载 2023-05-30 09:14:33
117阅读
一、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
41阅读
Redis的网络模型是基于I/O多路复用程序来实现的。源码中包含四种多路复用函数库epoll、select、evport、kqueue。在程序编译时会根据系统自动选择这四种库其中之一。下面以epoll为例,来分析Redis的I/O模块的源码。epoll系统调用方法Redis网络事件处理模块的代码都是围绕epoll那三个系统方法来写的。先把这三个方法弄清楚,后面就不难了。epfd = epoll_c
Redis 源码阅读篇一、Redis源码目录结构首先,我们来了解下 Redis 的目录结构。 为什么要从目录结构开始了解呢?其实,这是我自己阅读代码的一个小诀窍:在学习一个 大型系统软件的代码时,要想快速地对代码有个初步认知,了解系统源码的整体目录结构就是一个行之有效的方法。这是因为,系统开发者通常会把完成同一或相近功能的代码文 件,按目录结构来组织。能划归到同一个目录下的代码文件,一般都是具有相
转载 2023-07-10 22:18:19
37阅读
Redis 3.0 源码注释 本项目是注释版的 Redis 3.0 源码, 原始代码来自: https://github.com/antirez/redis 。这份注释是我在创作新版《Redis 设计与实现》期间, 为了了解 Redis 的内部实现而制作的, 所有在书中有介绍的内容, 在源码中都进行了相应的注释。在注释的过程中, 除了少量空格和空行方面的调整外, 没有对原
本文将从以下几个方面介绍前言字典结构图字典结构定义字典操作源码分析命令操作字典 前言在上一篇文章Redis 数据结构-字符串源码分析分析了字符串的一个实现过程,现在来看下另外一种数据结构字典的实现原理,字典这种数据结构并不是 Redis 那几种基本数据结构,但是 hash , sets 和 sorted sets 这几种数据结构在底层都是使用字典来实现的(并不仅仅是字典
文章目录简介结构定义和详细介绍zskiplist 结构zskiplistnode结构操作API创建随机算法插入获取节点排名释放删除 参考文章 图解比较详细: 图解redis跳跃表 简介跳跃表是Redis zset的底层实现之一,zset在member较多时会采用跳跃表作为底层实现,它在添加、删除、查找节点上都拥有与红黑树相当的性能,它其实说白了就是一种特殊的链表,链表的每个节点存了不同的“
当集群模式中需要扩缩容时,需要向集群中添加/删除节点,本节就来介绍下这个过程。添加节点当把节点A加入集群时,需要运维工具redis-cli向集群中任意节点发送Cluster meet < ip > < port > 命令:void clusterCommand(client *c) { ... if (!strcasecmp(c->argv[1]->ptr,
转载 2023-07-04 16:52:12
89阅读
上一篇解读了一下SDS,本来觉得完了,但之后想想感觉少点什么,现在我们从使用的角度去梳理一下,大家想想对于字符串, 我们经常使用的有哪几个方法呢?这些方法又是怎么实现的?在研究上面的几个方法之前我们先来了解一下redisObject对象,源码redis.h中,以下是源码:typedef struct redisObject { unsigned type:4; //对象类型,string
转载 2023-06-07 19:16:26
105阅读
  • 1
  • 2
  • 3
  • 4
  • 5