Redis底层源码分析系列(前提准备)

文章目录

    • [一、 面试题](#一、 面试题)
    • [二、 源码分析](#二、 源码分析)
      • [1. 源码导入](#1. 源码导入)
      • [2. 源码核心部分](#2. 源码核心部分)

一、 面试题

1. redis跳跃列表了解吗?这个数据结构有什么缺点?

2. redis项目里面怎么用? redis的数据结构都了解哪些?

3. redis的zset底层实现?

redis的底层数据结构主要有下面几种:

SDS动态字符串、双向链表、压缩列表ziplist、哈希表hashtable、跳表skiplist、整数集合intset、快速结合quicklist、紧凑列表listpack

二、 源码分析

1. 源码导入

我们可以在github上下载指定的源码包,然后source目录下就是redis的源码。redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存、分布式、可选持久性的键值对存储数据库,并提供了多种语言的API。

2. 源码核心部分

  • Redis基本的数据结构(源码骨架)

redis对象:object.c

字符串:t_string.c

列表:t_list.c

字典:t_hash.c

集合及有序集合:t_set.ct_zet.c

数据流:t_stream.c

简单动态字符串:sds.c

整数集合intset:intset.c

压缩列表:ziplist.c

快速链表:quicklist.c

紧凑列表listpack:listpack.c

字典:dict.c

  • Redis数据库的实现

数据库的底层实现:db.c

持久化:rdb.caof.c

  • Redis服务端和客户端实现

事件驱动:ae.cae_epoll.c

网络连接:anet.cnetworking.c

服务端程序:server.c

客户端程序:redis-cli.c

  • 其它

主从复制:replication.c

哨兵:sentinel.c

集群:cluster.c

其它数据结构:hyperloglog.cgeo.c

其它功能:如pub/sub和Lua脚本等

相关推荐
钢铁男儿29 分钟前
PyQt5高级界而控件(容器:装载更多的控件QDockWidget)
数据库·python·qt
阿蒙Amon3 小时前
C# Linq to SQL:数据库编程的解决方案
数据库·c#·linq
段帅龙呀5 小时前
Redis构建缓存服务器
服务器·redis·缓存
互联网搬砖老肖7 小时前
运维打铁: MongoDB 数据库集群搭建与管理
运维·数据库·mongodb
典学长编程8 小时前
数据库Oracle从入门到精通!第四天(并发、锁、视图)
数据库·oracle
积跬步,慕至千里9 小时前
clickhouse数据库表和doris数据库表迁移starrocks数据库时建表注意事项总结
数据库·clickhouse
极限实验室9 小时前
搭建持久化的 INFINI Console 与 Easysearch 容器环境
数据库
白仑色10 小时前
Oracle PL/SQL 编程基础详解(从块结构到游标操作)
数据库·oracle·数据库开发·存储过程·plsql编程
程序猿小D11 小时前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的个人财务管理系统,推荐!
java·数据库·mysql·spring·毕业论文·ssm框架·个人财务管理系统
钢铁男儿12 小时前
C# 接口(什么是接口)
java·数据库·c#