redis源码分析——zsetzset是什么skiplist数据结构level计算插入结点删除结点ziplist查找、插入、删除ziplist和skiplist选择 zset是什么zset是redisstring类型元素有序集合,每个元素都有一个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
 由于项目中使用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
今日起,阅读redis源码,话不多说,下载源码..................ok,开始。目录1:从数据结构开始(图为源码,附带个人简单分析):1:从数据结构开始(图为源码,附带个人简单分析):A:动态字符串         文件: sds.h sds.c前言:s-(sizeof(struct sdshdr))解释为buf为柔性数组,不占用空
最近好几次用到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较多时会采用跳跃表作为底层实现,它在添加、删除、查找节点上都拥有与红黑树相当性能,它其实说白了就是一种特殊链表,链表每个节点存了不同
三、JedisCluster模块源码解析1、JedisCluster类结构由于Jedis本身不是线程安全,所以选择使用对象池JedisPool来保证线程安全在JedisClusterInfoCache中,保存了节点和槽位一一对应关系,为每个节点建立一个对象JedisPool,并保存在map中。这个类主要用于保存集群配置信息2、JedisCluster初始化public class Jedi
一,redis内存管理介绍二,redis内存管理源码分析redis封装是为了屏蔽底层平台差异,同时方便自己实现相关函数,我们可以通过src/zmalloc.h 文件中相关宏定义来分析redis是怎么实现底层平台差异屏蔽,zmalloc.h 中相关宏声明如下:#if defined(USE_TCMALLOC) #define ZMALLOC_LIB ("tcmalloc-" __xstr(
本文将从以下几个方面介绍前言字典结构图字典结构定义字典操作源码分析命令操作字典 前言在上一篇文章Redis 数据结构-字符串源码分析分析了字符串一个实现过程,现在来看下另外一种数据结构字典实现原理,字典这种数据结构并不是 Redis 那几种基本数据结构,但是 hash , sets 和 sorted sets 这几种数据结构在底层都是使用字典来实现(并不仅仅是字典
Redis网络模型是基于I/O多路复用程序来实现源码中包含四种多路复用函数库epoll、select、evport、kqueue。在程序编译时会根据系统自动选择这四种库其中之一。下面以epoll为例,来分析RedisI/O模块源码。epoll系统调用方法Redis网络事件处理模块代码都是围绕epoll那三个系统方法来写。先把这三个方法弄清楚,后面就不难了。epfd = epoll_c
Redis 源码阅读篇一、Redis源码目录结构首先,我们来了解下 Redis 目录结构。 为什么要从目录结构开始了解呢?其实,这是我自己阅读代码一个小诀窍:在学习一个 大型系统软件代码时,要想快速地对代码有个初步认知,了解系统源码整体目录结构就是一个行之有效方法。这是因为,系统开发者通常会把完成同一或相近功能代码文 件,按目录结构来组织。能划归到同一个目录下代码文件,一般都是具有相
转载 2023-07-10 22:18:19
41阅读
Redis 3.0 源码注释 本项目是注释版 Redis 3.0 源码, 原始代码来自: https://github.com/antirez/redis 。这份注释是我在创作新版《Redis 设计与实现》期间, 为了了解 Redis 内部实现而制作, 所有在书中有介绍内容, 在源码中都进行了相应注释。在注释过程中, 除了少量空格和空行方面的调整外, 没有对原
一、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阅读
  • 1
  • 2
  • 3
  • 4
  • 5