redis
文章平均质量分 74
偷懒的程序员-小彭
不讲情怀,只说技术,各种流行开源框架代码讲解,深入各种细节,全网最深入的技术博文。带你欣赏代码之美。
展开
-
redis系列,aof持久化,你不知道的一些秘密!深度源码剖析
文章目录本人 github 地址本篇文章看点aof的触发bgsave的主流程为什么要fork子进程而不是用子线程去做rdb保存数据到file的流程总结本人 github 地址github 地址 里面有注释好的代码,下载下来可以方便阅读。本篇文章看点aof什么时候触发。aof的各种磁盘策略是如何执行的。什么aof的rewrite。rewrite又到底是怎么做了什么。aof的触发上一篇我们讲了rdb,大致的了解了rdb是什么样的一个持久化的方式,但是为什么有了rdb的机制还要引入aof原创 2020-12-20 18:17:46 · 1592 阅读 · 4 评论 -
redis系列,rdb为什么要这么做?深度剖析
文章目录本人 github 地址本篇文章看点本人 github 地址github 地址 里面有注释好的代码,下载下来可以方便阅读。本篇文章看点rdb什么时候执行,条件是如何触发。rdb为什么用子进程而不是线程。什么是copy on write为什么是fork而不是其它rdb的触发条件...原创 2020-12-04 14:38:35 · 2729 阅读 · 9 评论 -
redis系列,zset到底是个什么鬼(一)!深度源码剖析
文章目录本人 github 地址本篇文章看点zset 的结构add操作源码解析本人 github 地址github 地址 里面有注释好的代码,下载下来可以方便阅读。本篇文章看点如果你对zset的结构仍然有疑问,请认真看本篇文章如果面试官问你zset到底增加节点和删除节点都是如何操作的,你觉得你回答不出来或者不够清晰,请认真看本篇文章如果你是redis源码爱好者,请认真看本篇文章。如果你立志做一个肚里有货的程序员,请认真看本篇文章。本篇文章会深度剖析跳表的add操作,不放过任何一行代码,原创 2020-11-16 17:56:08 · 2630 阅读 · 3 评论 -
redis系列,bitmap 命令全解析以及源码赏析
文章目录本人 github 地址前言怎样求一个二进制串里面有多少个1本人 github 地址github 地址 里面有注释好的代码,下载下来可以方便阅读。前言由于这周工作关系,没有太多事件阅读太多源码,但是项目常常提到一些用到bitmap的场景,这次我们来把redis 的bit操作命令一网打尽怎样求一个二进制串里面有多少个1用到下面这个算法,必须为2的次方,如果不为2的次方的话可以通过下面redis这种方式来处理首先我们举一个8位的数,如 11011000。我们可以用肉眼方式知道结果为4,原创 2020-11-08 22:51:27 · 2837 阅读 · 6 评论 -
redis系列,你真的了解scan命令吗
文章目录前言scan 命令用法前言上章我们讲解了字典的结构,今天我们来讲讲跟我们日常用得比较多的命令:scanscan 命令用法原创 2020-10-31 11:47:32 · 2191 阅读 · 2 评论 -
redis系列,给你看最完整的字典讲解
非常详细的redis 字典的讲解,字典的结构是如何,如何做rehash,什么是渐进式hash原创 2020-10-24 20:11:26 · 530 阅读 · 2 评论 -
redis系列,redis是如何执行命令(一)
文章目录前言一、从io读取数据二、解析buf数据三、解析命令流程总结前言上篇文章介绍了sds的结构,和sds的使用方法,这章我们在回到读取io数据的地方来看,redis是如何从io 读取数据最后转化成执行命令的过程。本篇文章需要先熟悉前面两篇文章,没看的同学需要退回看一下。redis系列,redis网络,你得知道的一些事.一、从io读取数据在网络这个章节我们知道,我们知道通过把客户端对应fd注册到epoll,当有数据可读的时候最后会调用到以下这个方法//这里开始看怎么从client 客户端原创 2020-10-22 17:32:50 · 2062 阅读 · 3 评论 -
redis 系列,要懂redis,首先得看懂sds(全网最细节的sds讲解)
文章目录前言一、sds的结构sds的定义sds的初始化sds 图解sds 扩容前言上篇文章我们分析了redis如何通过监听端口,获取到客户端传过来的数据,本篇文章会讲到redis里面用到的最基础的数据类型sds,它相比较于普通string有什么不同了,废话不多说,下面正式进入主题一、sds的结构sds的定义sds.h//定义了一个char 指针typedef char *sds;/* Note: sdshdr5 is never used, we just access the..原创 2020-10-15 16:26:45 · 10707 阅读 · 15 评论 -
redis系列,redis网络,你得知道的一些事
文章目录前言基础网络知识redis的监听于地址绑定redis 的网络监听事件配置epoll的使用总结redis 的网络监听事件初始化客户端连接的read handler处理流程读客户端连接数据的handler处理流程总结:读源码小技巧分享下篇文章预告前言上篇文章研究了redis的多线程io,本篇文章将讲一下redis的网络架构,来揭秘redis接收数据的全过程基础网络知识再具体研究redis的代码之前,我们得首先有一个大体的服务器如何收到客户端发送的全过程。因为redis 主要是用tcp..原创 2020-10-09 09:34:34 · 4138 阅读 · 12 评论 -
redis系列,redis6.0多线程解密!
文章目录前言io 多线程初识io多线程的读:io多线程的写:多线程io的配置详细注释io 多线程深入io多线程的初始化io多线程的处理io多线程的触发和停止总结前言redis 6.0推出,听大家谈论得最多就是redis 变成多线程了,这到底是怎么回事,本文会给你全网最详细的多线程讲解,从多线程初始化,到多线程是如何应用,以及你该如何去配置多线程,本文会给出最详细的讲解。io 多线程初识redis 多线程指的是redis 6.0的io 多线程特性,为了避免歧义,首先得说在redis6.0之前并..原创 2020-09-26 22:52:17 · 1755 阅读 · 3 评论 -
redis系列,redis的异步删除我该怎么用?
文章目录前言unlink 一个拯救性能的英雄?小结使用建议相关redis 异步删除配置建议性能测试总结:前言redis 在4.0之后就推出了异步删除,其中相关的最直接的命令就是unlink, 那如何去用unlink,它是否能够取代del 命令,我们从源码层面,来好好的剖析一下,阅读下面文章之前,我们先怀着以下几个疑问去看。异步删除会存在并发问题吗?它是怎么解决并发问题的?为什么要异步删除?unlink 一个拯救性能的英雄?我们话不多说,先来直接上最核心的代码unlink 入口代码..原创 2020-09-21 20:47:24 · 2154 阅读 · 2 评论 -
redis系列,键过期的知识你要知道的全在这里完结篇(二)
文章目录前言过期键清理相关策略被动清理前言即上篇文章介绍的跟过期相关的命令,以及整个过期键的存储过程,这篇文章可以说是过期键的终极篇,主要讲过期键的管理策略过期键清理相关策略过期键清理主要分为两大类1, 被动清理2, 主动清理被动清理redis 本身就是一个key,value的系统即所有的操作都会涉及到对key的操作,即所有对key的操作都可能触发被动清理过期键,即如果发现当前键已经过期,则对该键走过期流程具体我们来看get相关的代码来做一个例子get 的代码方法进入后会调用以下..原创 2020-09-20 15:18:49 · 2731 阅读 · 6 评论 -
redis系列,键过期的知识你要知道的全在这里(一)
文章目录前言一、键过期的相关命令1.对过期有影响的操作2.对过期无影响的操作3.过期命令,和拯救正在过期键的命令4.过期命令相关源码分析前言本文主要全面分析redis如何来设置过期key,跟过期相关的操作,哪些我们认为可能会有影响但实际不会产生影响的操作,以及过期键的处理策略。本文会从源码层面聊到一些其他文章不曾有的部分废话不多说,下面正式进入主题一、键过期的相关命令1.对过期有影响的操作有键覆盖操作的命令如:DEL,SET,GETSE,RENAME, 这里重点说一下set和renam..原创 2020-09-11 17:35:06 · 537 阅读 · 1 评论 -
ziplist vs 普通数组,以及redis hash 在ziplist的实现
ziplist vs 普通数组以及redis hash 在ziplist的实现zipList 特点一般数组的特点:hash的key和value 在ziplist的存储zipList 特点需要连续的内存地址。同时也需要预分配地址。可以存不定长的数据,但是有长度限制。从数组尾巴插入,不会造成数组移位的情况。插入,删除,都有可能造成数组移位,而造成的大量内存copy 的行为,插入,删除平均时间复杂度为O(n), 最差的时间时间复杂度为O(n²)查询效率跟普通数组相同为O(n)ziplist的模型原创 2020-09-06 23:13:42 · 973 阅读 · 2 评论