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阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            #安装目录  mkdir -p /data/apps/redis
cd /data/tgz
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
cd redis-3.2.1
make PREFIX=/data/apps/redis install #安装到指定目录中   #在安装redis成功后,你将可以在/data/app            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-20 09:05:07
                            
                                63阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             由于项目中使用Redis,所以使用它的Java客户端Jedis也有大半年的时间(后续会分享经验)。 最近看了一下源码,源码清晰、流畅、简洁,学到了不少东西,在此分享一下。(源码地址:https://github.com/xetorthio/jedis)  协议  和Redis Server通信的协议规则都在redis.clients.jedi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-28 13:28:24
                            
                                51阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            项目地址:https://github.com/doocs/source-code-hunterSDS(Simple Dynamic Strings, 简单动态字符串)是 Redis 的一种基本数据结构,主要是用于存储字符串和整数。 这篇文章里,我们就来探讨一下 Redis SDS 这种数据结构的底层实现原理。学习之前,首先我们要明确,Redis 是一个使用 C 语言编写的键值对存储系统            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-04 22:41:12
                            
                                42阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            有序集合对象其实跟集合对象类似,只不过它多了一个score的参数,集合中的每个元素都有一个分值,在集合中元素是按照score排序的。有序集合的底层编码也是有两种实现,压缩列表REDIS_ENCODING_ZIPLIST以及跳跃表REDIS_ENCODING_SKIPLIST。和集合的一样,有序集合的编码方式是通过检查第一个被加入的元素来决定的。ZSET结构/* RedisObject结构 */
t            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-04 10:44:38
                            
                                16阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            今日起,阅读redis源码,话不多说,下载源码..................ok,开始。目录1:从数据结构开始(图为源码,附带个人简单分析):1:从数据结构开始(图为源码,附带个人简单分析):A:动态字符串         文件: sds.h sds.c前言:s-(sizeof(struct sdshdr))的解释为buf为柔性数组,不占用空            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-10 15:21:05
                            
                                161阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            最近好几次用到redis,但是一直没有时间来好好学习下redis的原理,打算最近花一个月的空余时间来整理学习下redis的源码。redis本身非常简洁,下载源码直接make就ok了,而且似乎没有依赖第三方库什么的。先从基本的数据结构开始把,主要参考了http://www.redisbook.com/en/latest/index.html#, 非常赞的关于redis 的站点,作者huangz199            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-07 10:00:58
                            
                                52阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            当集群模式中需要扩缩容时,需要向集群中添加/删除节点,本节就来介绍下这个过程。添加节点当把节点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阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            近来在研读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阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录简介结构定义和详细介绍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阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Redis的网络模型是基于I/O多路复用程序来实现的。源码中包含四种多路复用函数库epoll、select、evport、kqueue。在程序编译时会根据系统自动选择这四种库其中之一。下面以epoll为例,来分析Redis的I/O模块的源码。epoll系统调用方法Redis网络事件处理模块的代码都是围绕epoll那三个系统方法来写的。先把这三个方法弄清楚,后面就不难了。epfd = epoll_c            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-15 22:02:38
                            
                                43阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Redis 源码阅读篇一、Redis源码目录结构首先,我们来了解下 Redis 的目录结构。 为什么要从目录结构开始了解呢?其实,这是我自己阅读代码的一个小诀窍:在学习一个 大型系统软件的代码时,要想快速地对代码有个初步认知,了解系统源码的整体目录结构就是一个行之有效的方法。这是因为,系统开发者通常会把完成同一或相近功能的代码文 件,按目录结构来组织。能划归到同一个目录下的代码文件,一般都是具有相            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-10 22:18:19
                            
                                41阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Redis 3.0 源码注释   本项目是注释版的 Redis 3.0 源码, 原始代码来自:  https://github.com/antirez/redis 。这份注释是我在创作新版《Redis 设计与实现》期间, 为了了解 Redis 的内部实现而制作的, 所有在书中有介绍的内容, 在源码中都进行了相应的注释。在注释的过程中, 除了少量空格和空行方面的调整外, 没有对原            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-18 17:07:50
                            
                                95阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、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阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            从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阅读
                            
                                                                             
                 
                
                                
                    