腾讯云大神亲码Redis深度手册【基础+应用+原理+集群+扩展+源码】六大核心知识,全部一次让你搞懂

本文详细介绍了Redis的各种用途,包括基础数据结构、分布式锁的实现、延时队列、位图、HyperLogLog、布隆过滤器等应用场景。同时,探讨了Redis的线程IO模型、持久化机制、主从同步以及集群解决方案如Sentinel和Cluster。此外,还涵盖了Redis的扩展功能和源码解析,强调了持续学习的重要性。

前言

作为这个时代码代码的秃头人员,对Redis肯定是不陌生的,如果连Redis都没用过,还真不好意思出去面试,指不定被面试官吊打多少次。

毕竟现在互联网公司和一些创业公司都要用到Redis,像亚马逊、谷歌、阿里、腾讯都要使用,可见精通Redis使用真的很有必要。

所以,今天则分享出腾讯云大神亲自码出的“redis深度笔记”,笔记内容没有讲一句废话,全篇看下来都是精华!

PART1:Redis深度笔记开篇

1.Redis可以用来做什么?

由Redis面试想到的

Redis可以做什么?

2.Redis基础数据结构

Redis安装

Redis基础的数据结构

容器型数据结构的通用规则

关于Redis使用的一些思考

PART2:Redis的应用总结

1.分布式锁

分布式锁

超时问题

可重入性

2.延时队列

异步消息队列?

队列空了怎么办?

队列延迟

空闲连接自动断开

锁冲突处理

延时队列的实现

进一步优化

3.位图

基本使用

统计和查找

魔术指令 bitfield

4.HyperLogLog

使用方法

pfadd这个pf是什么意思?

pfmerge适合什么场合用?

注意事项

HyperLogLog实现原理

pf的内存占用为什么是12k?

5.布隆过滤器

布隆过滤器是什么?

Redis中的布隆过滤器

布隆过滤器的基本使用

注意事项

布隆过滤器的原理

空间占用估计

实际元素超出时,误判率会怎样变化?

用不上Redis4.0怎么办?

布隆过滤器的其他应用

6.简单限流

如何使用Redis来实现简单限流策略?

7.漏斗限流

Redis-Cell

一些思考

8.GeoHash

用数据库来算附近的人

GeoHash算法

Redis的Geo指令基本使用

9.Scan

scan基础使用

字典的结构

scan遍历顺序

字典扩容

对比扩容缩容前后的遍历顺序

渐进式rehash

更多的scan指令

大Key扫描

PART3:Redis的原理

1.线程IO模型

非阻塞IO

事件轮询(多路复用)

指令队列

响应队列

定时任务

2.通信协议

RESP(Redis Serialization Protocol)

客户端->服务端

服务端->客户端

3.持久化

快照原理

fork(多进程)

AOF原理

AOF重写

fsync

运维

Redis4.0混合持久化

4.管道

Redis的消息交互

管道压力测试

深入理解管道本质

5.事务

Redis事务的基本使用

原子性

discard(丢弃)

优化

Watch

6.PubSub

消息多播

PubSub

模式订阅

消息结构

PubSub缺点

7.小对象压缩

32bit vs 64bit

小对象压缩存储(ziplist)

内存回收机制

内存分配算法

8.主从同步

CAP原理

最终一致

主从同步

增量同步

快照同步

增加从节点

无盘复制

Wait指令

PART4:Redis集群

1.Sentinel

消息丢失

Sentinel基本使用

2.Codis

Codis分片原理

不同的Codis实例之间槽位关系如何同步?

扩容

自动均衡

Codis的代价

Codis的优点

MGET指令的操作过程

架构变迁

Codis的尴尬

Codis的后台管理

3.Cluster

槽位定位算法

跳转

迁移

容错

网络抖动

可能下线(PFAIL-Possibly Fail)与确定下线(Fail)

Cluster基本使用

槽位迁移感知

集群变更感知

PART5:Redis拓展

1.Stream

消息ID

消息内容

增删改查

独立消费

创建消费组

消费

Stream消息太多怎么办?

消息如果忘记ACK会怎样?

PEL如何避免消息丢失?

Stream的高可用

分区Partition

http://2.Info指令

Redis每秒执行多少次指令?

Redis连接了多少客户端?

Redisn内存占用多大?

复制积压缓存区多大?

3.再谈分布式锁

Redlock算法

Redlock使用场景

4.过期策略

过期的key集合

定时扫描策略

从库的过期策略

5.LRU

LRU算法

近似LRU算法

6.懒惰删除

Redis为什么要懒惰删除(lazy free)?

flush

异步队列

AOF Sync也很慢

更多异步删除点

7.优雅地使用Jedis

重试

8.保护Redis

指令安全

端口安全

Lua脚本安全

SSL代理

9.Redis安全通信

spiped原理

spiped使用入门

PART6:源码

1.探索字符串内部结构

embstr vs raw

扩容策略

2.探索字典内部

dict 内部结构

渐进式rehash

查找过程

hash 函数

hash攻击

扩容条件

缩容条件

set的结构

3.探索压缩列表内部

增加元素

级联更新

IntSet 小整数集合

4.探索快速列表内部

每个ziplist存多少元素?

压缩深度

5.探索跳跃列表内部结构

基本结构

查找过程

随机层数

插入过程

删除过程

更新过程

如果score值都一样呢?

元素排名是怎么算出来的?

6.探索紧凑列表内部

级联更新

取代ziplist

7.探索基数树内部

应用

结构

增删节点

总结

最后,我想说的是,学习并非难事,而贵在坚持,尤其是在我们参与工作之后,要继续坚持学习就更不容易了。但对于程序员来说,学习是立业之根本,如若放弃学习,被市场淘汰是迟早的事情。所以,学习更多新的知识对于自己来说才是一种更大的投资。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值