文章目录简介结构定义和详细介绍zskiplist 结构zskiplistnode结构操作API创建随机算法插入获取节点排名释放删除 参考文章  图解比较详细: 图解redis跳跃表   简介跳跃表是Redis zset的底层实现之一,zset在member较多时会采用跳跃表作为底层实现,它在添加、删除、查找节点上都拥有与红黑树相当的性能,它其实说白了就是一种特殊的链表,链表的每个节点存了不同的“            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-24 17:12:35
                            
                                8阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            近来在研读redis3.2.9的源码,虽然网上已有许多redis的源码解读文章,但大都不成系统,且纸上学来终觉浅,遂有该系列博文。部分知识点参照了黄建宏的《Redis设计与实现》。定义在自定义的基础数据结构的基础上,redis 通过 redisObject 封装整合成了对外暴露的5中数据结构。  首先看看 redisObject 的定义: #define LRU_BITS 24
typedef s            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-15 18:31:31
                            
                                79阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            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阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            三、JedisCluster模块源码解析1、JedisCluster类结构由于Jedis本身不是线程安全的,所以选择使用对象池JedisPool来保证线程安全在JedisClusterInfoCache中,保存了节点和槽位的一一对应关系,为每个节点建立一个对象JedisPool,并保存在map中。这个类主要用于保存集群的配置信息2、JedisCluster的初始化public class Jedi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-11 20:10:49
                            
                                113阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            当集群模式中需要扩缩容时,需要向集群中添加/删除节点,本节就来介绍下这个过程。添加节点当把节点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源码分析2---结构体---链表  因为redis包含大量的键值对,redis中列表键的底层实现之一就是链表;当一个链表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,redis就会使用链表作为底层实现;     另外链表做外数据结构中最常使用的结构,如何高效的实现和值得我们学习;我之前在项目中大量使用了链表但是感觉            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-05-31 20:29:02
                            
                                72阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            集群的搭建Redis 的下载、安装、启动(单实例) 下载 redis 压缩包,然后解压压缩文件, 我们统一将 Redis 下载在/opt 目录下进入到解压缩后的 redis 文件目录(此时可以看到 Makefile 文件),编译 redis 源文件;执行命令如下$ cd /opt
$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-18 20:58:00
                            
                                81阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、Redis的一些特点非关系型的键值对数据库,底层是hashtable,可以根据键以0(1)的时间复杂度取出或插入关联值Redis的数据基于内存存储的键值对中键的类型可以是字符串,整型,浮点型等,且键是唯一的键值对中的值类型可以是string, hash, list, set, sorted_set等Redis内置了复制,磁盘持久化,LUA脚本, 事务,SSL, ACLS,客户端缓存,客户端代理            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-19 17:57:30
                            
                                40阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             文章目录简介内部实现压缩链表跳表跳表节点查询过程跳表节点层数设置为什么用跳表而不用平衡树? 简介Zset 类型(有序集合类型)相比于 Set 类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。有序集合保留了集合不能有重复成员的特性(分值可以重复),但不同的是,有序集合中的元素可以排序。内部实现Hash             
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-05-25 13:02:00
                            
                                185阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            redis源码分析——zsetzset是什么skiplist数据结构level的计算插入结点删除结点ziplist查找、插入、删除ziplist和skiplist的选择 zset是什么zset是redis中的string类型元素有序集合,每个元素都有一个double型的score,集合通过这个score将元素从小到大排列。zset中可以有多个相同的score。zset有两种实现方式,分别是ski            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-30 09:28:51
                            
                                44阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            第一节.参考 先说一句,redis的源码写的很优雅,很漂亮.代码比较规范,代码量不大.整体分析完帖子里面的源码过程不到三个小时.第二节.架构 一.Reactor模式  结构如下图:  我理解,就是一个生产消费模式,只是不需要队列,直接函数分发,叫分发模式更容易理解。或者类似观察者,每个观 察者关注的事件不一样。NIO或者Netty的网络编程中经常使用这种模式            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-09 21:52:04
                            
                                107阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一,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源码目录结构首先,我们来了解下 Redis 的目录结构。 为什么要从目录结构开始了解呢?其实,这是我自己阅读代码的一个小诀窍:在学习一个 大型系统软件的代码时,要想快速地对代码有个初步认知,了解系统源码的整体目录结构就是一个行之有效的方法。这是因为,系统开发者通常会把完成同一或相近功能的代码文 件,按目录结构来组织。能划归到同一个目录下的代码文件,一般都是具有相            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-10 22:18:19
                            
                                41阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、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
                            
                                144阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            本文将从以下几个方面介绍前言字典结构图字典结构定义字典操作源码分析命令操作字典   
 前言在上一篇文章Redis 数据结构-字符串源码分析分析了字符串的一个实现过程,现在来看下另外一种数据结构字典的实现原理,字典这种数据结构并不是 Redis 那几种基本数据结构,但是 hash , sets 和 sorted sets 这几种数据结构在底层都是使用字典来实现的(并不仅仅是字典            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-04 01:22:33
                            
                                34阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Redis 3.0 源码注释   本项目是注释版的 Redis 3.0 源码, 原始代码来自:  https://github.com/antirez/redis 。这份注释是我在创作新版《Redis 设计与实现》期间, 为了了解 Redis 的内部实现而制作的, 所有在书中有介绍的内容, 在源码中都进行了相应的注释。在注释的过程中, 除了少量空格和空行方面的调整外, 没有对原            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-18 17:07:50
                            
                                95阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Redis的网络模型是基于I/O多路复用程序来实现的。源码中包含四种多路复用函数库epoll、select、evport、kqueue。在程序编译时会根据系统自动选择这四种库其中之一。下面以epoll为例,来分析Redis的I/O模块的源码。epoll系统调用方法Redis网络事件处理模块的代码都是围绕epoll那三个系统方法来写的。先把这三个方法弄清楚,后面就不难了。epfd = epoll_c            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-15 22:02:38
                            
                                43阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            从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阅读