全面解析 Redis 持久化:RDB、AOF与混合持久化

前言:

每次你在游戏中看到玩家排行榜,或者在音乐应用中浏览热门歌单,有没有想过这个排行榜是如何做到实时更新的?当然,依靠 Redis 即可做到。

在技术领域,我们经常听到「键值存储」 这个词。但在 Redis 的世界里,这只是冰山一角。Redis 的对象,不仅仅是简单的数据,它们是为各种任务量身定制的超能工具。

接下来,让我们走进 Redis 的对象世界,Redis 5.0版本就已经支持了下面的 9 种类型,分别是 :字符串对象、列表对象、哈希对象、集合对象、有序集合对象、Bitmaps 对象、HyperLogLog 对象、Geospatial 对象、Stream对象。

Redis 对象:

首先,我们要知道,Redis 中保存的数据是以键值对的形式存在的。

对象的类型与编码

类型

在 Redis 的大家庭中,每个键值对都有两个重要的“身份证”。那就是键的类型值的类型。就好像我们的名字和职业,其中名字(键)总是一个字符串,而职业(值)则可以是各种各样:可以是字符串、列表、哈希、集合,甚至是有序集合。这就是我们所说的对象类型,五彩斑斓,各有特色。

编码

我们都知道超级英雄有着不同的超能力,蜘蛛侠(Spider-Man) 有蜘蛛感应,钢铁侠(Iron Man)有高科技装备。同样,Redis 中的每个对象都有一种称为“编码”的隐藏能力。这是什么呢?

简单说,编码是对象的“内部魔法”。它决定了对象在 Redis 内部的存储方式。就好像手机里的照片可以是 JPEG 或 PNG 格式,Redis 对象也可以有不同的编码格式。

但为什么这很重要呢?因为不同的编码方式意味着不同的存储效率和性能。Redis 非常聪明,它会选择最佳的编码方式,为我们节省空间和提高性能。

我们先来看下 Redis 对象结构体声明

typedef struct redisObject {
    unsigned type:4;       # 数据类型,使用了4位来表示
    unsigned encoding:4;   # 编码方式 
    void *ptr;             # 指向底层数据结构的指针
} robj;

Redis 中的每个对象都是由 redisObject 结构表示,其中的 encoding 成员记录了对象所使用的编码,encoding 的取值不同,对象内部使用的数据结构也会有所不同。关于 redis 对象的各个数据结构的讲解,本篇不涉及,后续会补上。

分类

字符串对象

基本概念:

字符串对象是最简单的类型,也是二进制安全的,意味着可以存储任何形式的数据,例如 JPEG 图片、序列化的对象或者纯文本。

简单图解:

https://www.bilibili.com/read/cv32911818/
https://www.bilibili.com/read/cv32909725/
https://www.bilibili.com/read/cv32910298/
https://www.bilibili.com/read/cv32915294/
https://www.bilibili.com/read/cv32915343/
https://www.bilibili.com/read/cv32915382/
https://www.bilibili.com/read/cv32915437/
https://www.bilibili.com/read/cv32915539/
https://www.bilibili.com/read/cv32915608/
https://www.bilibili.com/read/cv32915669/
https://www.bilibili.com/read/cv32915709/
https://www.bilibili.com/read/cv32915754/
https://www.bilibili.com/read/cv32915799/
https://www.bilibili.com/read/cv32915836/
https://www.bilibili.com/read/cv32915868/
https://www.bilibili.com/read/cv32915947/
https://www.bilibili.com/read/cv32915997/
https://www.bilibili.com/read/cv32916031/
https://www.bilibili.com/read/cv32916905/
https://www.bilibili.com/read/cv32916958/
https://www.bilibili.com/read/cv32917039/
https://www.bilibili.com/read/cv32917159/
https://www.bilibili.com/read/cv32917293/
https://www.bilibili.com/read/cv32917398/
https://www.bilibili.com/read/cv32917505/
https://www.bilibili.com/read/cv32917576/
https://www.bilibili.com/read/cv32917611/
https://www.bilibili.com/read/cv32917758/
https://www.bilibili.com/read/cv32917808/
https://www.bilibili.com/read/cv32911944/
https://www.bilibili.com/read/cv32912015/
https://www.bilibili.com/read/cv32912052/
https://www.bilibili.com/read/cv32912077/
https://www.bilibili.com/read/cv32912177/
https://www.bilibili.com/read/cv32912219/
https://www.bilibili.com/read/cv32912253/
https://www.bilibili.com/read/cv32912326/
https://www.bilibili.com/read/cv32914739/
https://www.bilibili.com/read/cv32914734/
https://www.bilibili.com/read/cv32914727/
https://www.bilibili.com/read/cv32914721/
https://www.bilibili.com/read/cv32914713/
https://www.bilibili.com/read/cv32914704/
https://www.bilibili.com/read/cv32914701/
https://www.bilibili.com/read/cv32914693/
https://www.bilibili.com/read/cv32914689/
https://www.bilibili.com/read/cv32914686/
https://www.bilibili.com/read/cv32914684/
https://www.bilibili.com/read/cv32913919/
https://www.bilibili.com/read/cv32913885/
https://www.bilibili.com/read/cv32913866/
https://www.bilibili.com/read/cv32913831/
https://www.bilibili.com/read/cv32913810/
https://www.bilibili.com/read/cv32913780/
https://www.bilibili.com/read/cv32913743/
https://www.bilibili.com/read/cv32913708/
https://www.bilibili.com/read/cv32913653/
https://www.bilibili.com/read/cv32913618/
https://www.bilibili.com/read/cv32913596/
https://www.bilibili.com/read/cv32913583/
https://www.bilibili.com/read/cv32913565/
https://www.bilibili.com/read/cv32913545/
https://www.bilibili.com/read/cv32913526/
https://www.bilibili.com/read/cv32913503/
https://www.bilibili.com/read/cv32913463/
https://www.bilibili.com/read/cv32913435/
https://www.bilibili.com/read/cv32913420/
https://www.bilibili.com/read/cv32913400/
https://www.bilibili.com/read/cv32913390/
https://www.bilibili.com/read/cv32913371/
https://www.bilibili.com/read/cv32913350/
https://www.bilibili.com/read/cv32913325/
https://www.bilibili.com/read/cv32913301/
https://www.bilibili.com/read/cv32913270/
https://www.bilibili.com/read/cv32913241/
https://www.bilibili.com/read/cv32913194/
https://www.bilibili.com/read/cv32913165/
https://www.bilibili.com/read/cv32913147/
https://www.bilibili.com/read/cv32913129/
https://www.bilibili.com/read/cv32913118/
https://www.bilibili.com/read/cv32913097/
https://www.bilibili.com/read/cv32913083/
https://www.bilibili.com/read/cv32913058/
https://www.bilibili.com/read/cv32912741/
https://www.bilibili.com/read/cv32912718/
https://www.bilibili.com/read/cv32912694/
https://www.bilibili.com/read/cv32912527/
https://www.bilibili.com/read/cv32916868/
https://www.bilibili.com/read/cv32917248/
https://www.bilibili.com/read/cv32917859/
https://www.bilibili.com/read/cv32918364/
https://www.bilibili.com/read/cv32918180/
https://www.bilibili.com/read/cv32918205/
https://www.bilibili.com/read/cv32918220/
https://www.bilibili.com/read/cv32918254/
https://www.bilibili.com/read/cv32918382/
https://www.bilibili.com/read/cv32918422/
https://www.bilibili.com/read/cv32918454/
https://www.bilibili.com/read/cv32918499/
https://www.bilibili.com/read/cv32918777/
https://www.bilibili.com/read/cv32918805/
 

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值