1、redis源码在哪里
redis-6.0.8\src
2、Redis源代码的核心部分
src源码包下面该如何查看?
2.1、Redis基本的数据结构(骨架)
① 简单动态字符串sds.c
② 整数集合inset.c
③ 压缩列表ziplist.c
④ 快速链表quicklist.c
⑤ 字典dict.c
⑥ Streams的底层实现结构listpack.c和rax.c-了解
2.2、Redis数据类型的底层实现
① Github官网说明
② Redis对象object.c
③ 字符串t_string.c
④ 列表t_list.c
⑤ 字典t_hash.c
⑥ 集合及有序集合t_set.c和t_zset.c
⑦ 数据流t_stream.c
2.3、Redis数据库的实现
① 数据库的底层实现db.c
② 持久化rdb.c和aof.c
2.4、Redis服务端和客户端实现
① 事件驱动ae.c和ae_epoll.c
② 网络连接anet.c和 networking.c
③ 服务端程序 server.c
④ 客户端程序 redis-cli.c
2.5、其他
① 主从复制 replication.c
② 哨兵 sentinel.c
③ 集群 cluster.c
④ 其他数据结构,如 hyperloglog.c、geo.c等
⑤ 其他功能,如pub/sub、Lua脚本
3、我们平时说redis是字典数据库KV键值对到底是什么?
3.1、一句话
redis是key-value 存储系统,其中key类型一般为字符串,value类型则为 redis对象(redisObject)
3.2、6大类型说明(粗分)
① 传统的5大类型
② 新介绍的3大类型
bitmap 实质是String
hyperLogLog 实质是String
GEO 实质是Zset
3.3、上帝视角
3.4、Redis定义了redisObject结构体来表示String、hash、list、set、zset等数据类型
3.4.1、C语 struct结构体语法简介
为了定义结构,您必须使用 struct语句。 struct语句定义了一个包含多个成员的新的数据类型 struct语句的格式如下:
struct type_name{
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
.
} object_names;
type_name是结构体类型的名称, member_type1 member_name1是标准的变量定义,比如int i;或者 float;或者其他有效的变量定义。在结构定义的末尾,最后一个分号之前,您可以指定一个或多个结构变量,这是可选的。下面是声明一个构体类Books,变量为book
struct Books{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;
typedef关键字
下面是一种更简单的定义结构的方式,您可以为创建的类型取一个"别名"。例如:
typedef struct Books{
char title[50];
char author[50];
char subject[100];
int book_id;
} Books;
现在,您可以直接使用 Books来定义 Books类型的变量,而不需要使用 struct关键字。下面是实例:
Books Book1,Book2;
3.4.2、Redis中每个对象都是一个 redisObject结构
3.4.3、字典、KV是什么
每个键值对都会有一个dictEntry
3.4.4、redisObject+Redis数据类型+Redis 所有编码方式(底层实现)三者之间的关系
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务