
Redis
文章平均质量分 73
baseoncpp
轻松写代码,快乐过人生。
展开
-
思考:Redis为什么这么快?
注:本篇小短文,随心而发,属于笔者自己的一个技术思考吧。请看到这句话的朋友慎重,是否真的考虑阅读下去,因为不一定能给您带来帮助。但是您不惜浪费时间读完,我希望真的能引起你一点点思考,并且给您带来一定的帮助。(要是有一点帮助,不妨给个赞,因为这种类似的思考,总不间断的出现,要可以,后续可能继续分享)相信不少同学在面试、或者是平常也会思考过这个问题:为什么Redis这么快?这个问题,网上有不少人分享总结过了。类似八股文的形式,面试的话直接套用就好了。可以说是拼记忆力的"知识"了。最近也断断续续看了一个月原创 2022-04-15 14:53:53 · 3942 阅读 · 0 评论 -
Redis7.0代码分析总结之:用野指针来判断函数执行成功与否
在分析dict.c和dict.h的代码时候,发现利用指针是否为空来判断函数是否执行成功。而且该指针可能还是一个 野指针!废话不多说,下面结合代码来描述说明!Let’s go!出现野指针的函数是dictGenericDelete,位于src/dict.c源文件。而该函数分别被两个函数调用:dictUnlinkdictDelete其中dictUnlink是摘除该key对应的entry,不会释放内存空间。函数执行成功后返回的是该entry的内存地址,空间有效。不会产生野指针。而dic原创 2022-03-23 17:04:08 · 656 阅读 · 0 评论 -
Redis7.0代码分析总结之:底层数据结构listpack实现原理
文章目录一、前言二、实现原理2.1 、内存结构2.2、 数据存储编码方案2.3、 backlen长度编码方案三、主要API介绍3.1、插入、更新、删除3.2、查找、遍历四、Redis内部应用五、总结一、前言 listpack压缩列表。作为ziplist的替代品,从2017年引入Redis后,到redis7.0已经完全取代ziplist作为redis底层存储数据结构之一。 &原创 2022-03-21 16:21:45 · 2282 阅读 · 2 评论 -
跟着Redis学编程系列:把一个字符串转换为有符号长整型
前言作为C语言基础,在面试的时候,很多时候在都会被要求实现数值到字符串、或者字符串到数值的转换函数。虽然难度不大,但是很容易在一些细节上出现纰漏。刚好最近在深度分析Redis7.0源代码。闲暇之余,顺带把这部分代码摘录出来,进行分析、注解。作为一个学习记录的同时也方便后来者快速了解Redis内部是如何实现的。日后面试也许能用的上。Redis实现方式代码片段注释int string2ll(const char *s, size_t slen, long long *value) { con原创 2022-03-17 00:21:22 · 1594 阅读 · 0 评论 -
Redis7.0代码分析总结之:事件模型概述
前言Redis自己封装了一个事件驱动模型,实现代码在src/ae.h和src/ae.c。Redis内部存在两类事件:文件事件和时间事件。其中文件事件包括网络事件、文件事件等;而时间事件主要是一些后台定义任务事件。本文主要围绕这两个代码文件,对Redis的事件模型进行分析学习。【不对Reactor模型,具体的事件处理流程等进行分析说明。这部分说明后续通过单独文章进行描述分析】首先我们先看两个图片:图片二图片1是基于ac.h代码抽象出来的Redis事件实现模型逻辑架构图。图片二是struct原创 2022-03-14 22:39:37 · 1071 阅读 · 0 评论 -
Redis7.0学习总结之:字符串命令详解
这里写自定义目录标题前言增删改字符指令:加减指令:查普通字符串指令7.0增加的LCS指令:总结命令列表导入前言总所周知Redis发展到目前为止,支持高达9种数据不同数据结构的NoSQL软件系统。伴随而来的是各种操作命令的不断增加。过百个命令,如何才能完全掌握,并且能比较系统化的记住,做到信手拈来,如果只是通过死记硬背估计难度比较,而且也不容易记住。故本系列文章,尝试通过分类汇总的方式,梳理各种命令。本篇作为本系列的第一篇文章:主要是针对字符串String指令。Redis作为一个NOSQL服务f器,从原创 2022-03-14 13:39:22 · 1034 阅读 · 0 评论