文章 2023-06-21 来自:开发者社区

Redis源码之跳表数据结构

跳表跳跃表(skiplist)是一种随机化的数据, 由 William Pugh 在论文《Skip lists: a probabilistic alternative to balanced trees》中提出, 跳跃表以有序的方式在层次化的链表中保存元素, 效率和平衡树媲美 —— 查找、删除、添加等操作都可以在对数期望时间下完成, 并且比起平衡树来说, 跳跃表的实现要简单直观得多。跳表是一个....

Redis源码之跳表数据结构
文章 2023-06-21 来自:开发者社区

Redis源码在windows下的成功编译(附cmake工程配置)

缘由windows下的redis有现成的安装包,这也是别人打包好并推荐的方式。也可以自己编译打包一份来用,或者对某部分进行定制化的修改(windows下的redis不是很稳,存在一些问题)。为了更好的使用redis,分析Redis 源码是很有必要。特别是对数据结构和算法的学习,这是很好的例子,比lecode刷题有趣。把源码fork下来,然后加入cmake项目工程编译打包生成程exe可执行程序。中....

Redis源码在windows下的成功编译(附cmake工程配置)
文章 2023-06-18 来自:开发者社区

真香!阿里大牛“亲码”千页Redis源码笔记,差距不止一点点

Redis提到Redis,想必各位后端大佬们关于Redis的方方面面很多大多都以知晓。不过LZ想问的是是否有人去真正了解过Redis的源码?当然如果你工作上对Redis仅仅是简单的应用,那肯定是不用刻意去啃源码这个东西的。但是如果你想做到真正精通Redis,想要涨点薪的话,那源码这一块一定不能落下!阅读源码的好处源码里面有前人总结的经验心得,学习源码有利于我们将前人的优秀设计思想应用到自己的项目....

真香!阿里大牛“亲码”千页Redis源码笔记,差距不止一点点
文章 2023-06-16 来自:开发者社区

Redis源码环境构建

Redis源码环境构建 近日,蒋德钧新上了一门Redis源码剖析的课程,应好友沈架构师的邀请,又重拾起了Redis源码学习。不过作为正经的JAVA工程师,大概在大学毕业后再也没写过C语言的源码了(还是看过一些的)。搭建一个Redis阅读环境我都好意思写一篇博客记录一下了。 不过,不是在windows环境下构建了,是在deepin系统下进行的构建,也许windows用户可以出门右拐了。本次搭建环境....

Redis源码环境构建
文章 2023-06-16 来自:开发者社区

redis源码中的Pub/Sub发布订阅通信

在前面两篇文章中,我们学习了哨兵工作的基本过程:哨兵会使用 sentinelRedisInstance 结构体来记录主节点的信息,在这个结构体中又记录了监听同一主节点的其他哨兵的信息。那么,一个哨兵是如何获得其他哨兵的信息的呢?这其实就和哨兵在运行过程中,使用的发布订阅(Pub/Sub)通信方法有关了。Pub/Sub 通信方法可以让哨兵订阅一个或多个频道,当频道中有消息时,哨兵可以收到相应消息;....

redis源码中的Pub/Sub发布订阅通信
文章 2023-06-16 来自:开发者社区

Redis的LFU算法源码实现解析

上篇文章我给你介绍了 Redis 对缓存淘汰策略 LRU 算法的近似实现。其实,Redis 在 4.0 版本后,还引入了 LFU 算法,也就是最不频繁使用(Least Frequently Used,LFU)算法。LFU 算法在进行数据淘汰时,会把最不频繁访问的数据淘汰掉。而 LRU 算法是把最近最少使用的数据淘汰掉,看起来也是淘汰不频繁访问的数据。那么,LFU 算法和 LRU 算法的区别到底有....

Redis的LFU算法源码实现解析
文章 2023-06-16 来自:开发者社区

Redis的LRU算法实现源码解析(二)

近似 LRU 算法具体如何执行?近似 LRU 算法的执行可以分成三大步骤,分别是判断当前内存使用情况更新待淘汰的候选键值对集合选择被淘汰的键值对并删除下面我们就依次来看下。判断当前内存使用情况首先,freeMemoryIfNeeded 函数会调用 getMaxmemoryState 函数,评估当前的内存使用情况。getMaxmemoryState 函数是在 evict.c 文件中实现的,它会判断....

Redis的LRU算法实现源码解析(二)
文章 2023-06-16 来自:开发者社区

Redis的LRU算法实现源码解析(一)

Redis的LRU算法实现源码解析LRU 算法的基本原理首先,我们需要理解 LRU 算法的基本原理。LRU 算法就是指最近最少使用(Least Recently Used,LRU)算法,这是一个经典的缓存算法。从基本原理上来说,LRU 算法会使用一个链表来维护缓存中每一个数据的访问情况,并根据数据的实时访问,调整数据在链表中的位置,然后通过数据在链表中的位置,来表示数据是最近刚访问的,还是已经有....

Redis的LRU算法实现源码解析(一)
文章 2023-06-16 来自:开发者社区

Redis的执行模型(Redis源码解析Redis真的是单线程模型吗?)

Redis的执行模型今天这篇文章,我们来聊聊 Redis 的执行模型。所谓的执行模型,就是指 Redis 运行时使用的进程、子进程和线程的个数,以及它们各自负责的工作任务。在实际使用 Redis 的时候,可能经常会听到类似“Redis 是单线程”“Redis 的主 IO 线程”,“Redis 包含多线程”等不同说法。我也听到不少同学提出困惑和疑问:Redis 到底是不是一个单线程的程序?其实,彻....

Redis的执行模型(Redis源码解析Redis真的是单线程模型吗?)
文章 2023-06-16 来自:开发者社区

Redis Server启动过程从源码来解析(二)

Redis 参数的设置方法Redis 对运行参数的设置实际上会经过三轮赋值,分别是默认配置值、命令行启动参数,以及配置文件配置值。首先,Redis 在 main 函数中会先调用 initServerConfig 函数,为各种参数设置默认值。参数的默认值统一定义在 server.h 文件中,都是以 CONFIG_DEFAULT 开头的宏定义变量。下面的代码显示的是部分参数的默认值,你可以看下。/*....

Redis Server启动过程从源码来解析(二)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

NoSQL数据库

阿里云NoSQL数据库提供了一种灵活的数据存储方式,可以支持各种数据模型,包括文档型、图型、列型和键值型。此外,它还提供了一种分布式的数据处理方式,可以支持高可用性和容灾备份。包含Redis社区版和Tair、多模数据库 Lindorm、MongoDB 版。

+关注
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等