如何学习redis

本文概述了从Redis基础入门到深入理解其数据结构、核心原理,如SDS存储、AOF/RDB、主从与哨兵,再到阅读专业书籍的过程。详细剖析了Redis的存储结构,包括哈希表、SDS的不同形式。适合进一步提升Redis技术认知。
摘要由CSDN通过智能技术生成
通过学习了一段时间的redis设计与实现,结合自己的学习心得简单总结一下学习路线
  • 第一步:先找一个简单的教程,我就找的菜鸟教程redis,把里边所有的数据类型还有怎么操作跟着教程走一遍,经过此步骤之后你就会完全熟悉redis的几种数据结构及其使用方法
  • 第二步:掌握了数据结构然后需要深入的了解了,比方说面试会问你来说下redis sds数据结构的实现方式,惰性删除策略有几种,list底层使用的有几种struct,aof rdb,主从同步,哨兵集群原理等等等等
  • 第三步:你已经知道现在自己需要的是什么了加深一步了解,最一开始写代码的两年,我也是不太懂为什么非得要搞懂这些,搞懂这些的意义是什么,当某一天接触到了一些东西,突然发现确实需要学习这些东西
  • 第三步:寻找redis系统的书籍去耐心的观看,每一次都会有不同的收获
  • 下边介绍一下redis的大概结构图
先展示一张redis的一个key-value存储到底在底层是什么样的,以一个RAW 的 SDS为例(其中省略了很多很多参数具体可以深入学习之后就会了解或者访问这里)
// redisServer redis的根struct
struct redisServer {
    // 数据库
    redisDb *db;
}
// redis默认16个数据库之中的数据库结构
typedef struct redisDb {
    dict *dict; //数据库键空间,保存着数据库中的所有键值对
}
 // 字典
typedef struct dict {
    dictht ht[2]; // 哈希表
} dict;
// 哈希表
typedef struct dictht {
    dictEntry **table; // 哈希表数组
} dictht;
// 哈希表节点
typedef struct dictEntry {			
    void *key; // 键
    union { // 值
        void *val;
    } v;
} dictEntry;
// redisObject就是 dictEntry->union->val
typedef struct redisObject {
    void *ptr;
} robj;
// redis的SDS redisObject->sdshdr
struct sdshdr {
    char buf[];
};
这样一看是不是就直接的感受到了redis的存储结构了
其中最复杂的在这个dictEntry->union->val
这个结构里存储了我们所说的字符串、列表、hash、
有序集合和无序集合,还有他们具体的数据结构比方说SDS就有三种
1、第一种就是一个数字,redisObject->ptr就是指向一个具体的值
2、第二种就是一个比较小的字符串,redisObject->ptr 会直接保存sds的具体结构,因为计算机的内存分配机制
3、第三种比较长的字符串,ptr会指向一个其他地址的sds

其中的geo和其他的一些结构我还没具体研究,本小白还需要回炉深造
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值