百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Redis深度历险:核心原理和应用实践

mhr18 2024-10-27 10:58 29 浏览 0 评论

概述

今天分享的是一本可在线阅读的技术小册,不过不是零散的浅薄的Redis局部知识点,而是一本全方位多角度深入讲解Redis丰富特性的浓缩版技术图书。

这本小册在内容结构上分为 Redis 基础应用原理集群拓展学习源码分析5 个版块:

  1. Redis 基础应用:占据篇幅最长,这也是对读者最有价值的内容,可以直接应用到实际工作中。
  2. 原理和集群版块:适合对技术有着极致追求的开发者,透过简单的技术表面看到精致的底层世界。
  3. 拓展学习版块:作为最核心内容之外的补充部分,主要用于进一步扩展技术视野或者夯实基础,便于进阶学习。
  4. 源码分析版块:主要满足高阶用户深入探索 Redis 内部实现的强烈渴望,读懂源码才是技术实力的真正体现。


目录:

开篇:授人以鱼不若授人以渔一Redis 可以用来做什么?

小册的内容范围.

Redis可以做什么?

小结.

扩展阅.....

基础:万丈高楼平地起一-Redis 基础数据结构

Redis基础数据结构.

string (字符串).

list (.表.......

hash (字典).

set (集合).

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

思考&作业

扩展阅读,

应用1:千帆竞发_分布式锁....

分布式锁

超时问题,

可重入性.

思考题.

应用2:缓兵之计一延时队列..

异步消息队列........

队列空了怎么办?

队列延迟

空闲连接自动断开.

锁冲突处理

延时队列的实现.

应用3:节衣缩食一位图...

基本使用

统计和查找,

魔术指令bitfield.

思考&.......

应用4:四两拨千斤一HyperLogLog.

使用方法.

pfadd这个pf是什么意思?

pfmerge适合什么场合用?

注意事项...

HyperLogLog实现原理


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

思考&作业

扩展阅读

应用5:层峦叠嶂一布隆 过滤器.....

布隆过滤器是什么?

Redis中的布隆过滤器,

布隆过滤器基本使用.

注意事项....

布隆过滤器的原理.

空间占用估计

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

用不上Redis4.0 怎么办?

布隆过滤器的其它应用....

扩展阅读.................

应用6:断尾求生-简 .限........

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

解决方案,

应用7:一毛不拔一漏斗限流.

Redis-Cell.

拓展阅读....

应用8:近水楼台一Ceu......

用数据库来算附近的人.....

GeoHash算法.

Redis的Geo指令基本使用.

小结&注意.项.............

应用9:大海捞针

. Scan

scan

基础使用

字典的结构....

scan遍历顺序

字典扩容....

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

渐进式rehas....

更多的scan指....

大key .描...

扩展阅读.....

原理1:鞭辟入里一线程IO模型..

非阻塞.........

事件轮询(多路复用) ..........

指令队列.

响应队列,

定时任务

扩展阅读.

原理2:交头接耳一通信协议.

RESP(Redis Serialization Proto......

客户端->服务器............

服务器->客户端.

小结....

扩展阅读.

原理3:未雨绸缪一持久化 ......

快照原理

fork(多进程)....

AOF原理....

AOF重写

运维.

Redis 4.0混合持......

原理4:雷厉风行一管道

Redis的消息交互.

管道压力测试....

深入理解管道本质

小结.

原理5:同舟共济-事务,

Redis事务的基本使用

原子性

discard(丢弃) .

优化.

Watch

思考题.

原理6:小道消息一PubSub.

消息多播

PubSub

模式订阅

消息结构.

PubSub缺点....

补充.

原理7:开源节流- -小对象压缩..

32bit vs 64bit

小对象压缩存储(ziplis).

内存回收机制

内存分配算法...

扩展阅读.

原理8:有备无患一主从同步.

CAP原理

最终一致.

主从同步,

增量同步,

快照同步....

增加从节点

无盘复制.

Wait指令

小结.

集群1:李代桃僵一- Sentine1

消息丢失

Sentinel基本使用.

作业.

集群2:分而治之-Codis ,

Codis分片原理

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

扩容...

自动均衡

Codis的代价

Codis的优点,

MGET指令的操作过程.

架构变迁.........................

Codis的尴尬.

Codis的后台管理

思考&作业

集群3:众志成城一Cluster..

槽位定位算法...

跳转.

迁移.

容错.

网络抖动,

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

Cluster基本使用

槽位迁移感知

集群变更感知

思考&作业

拓展1:耳听八方

消息ID.

消息内容,

增删改查.

独立消费

创建消费组....

消费.

Stream消息太多怎.么...........

消息如果忘记ACK会怎样? ......

PEL如何避免消息丢失?.

Stream的高可用

分区Partition..

小结.

拓展2:无所不知一Info 指令.....

Redis每秒执行多少次指令? ......

Redis连接了多少客户端?

Redis内存占用多大...........

复制积压缓冲区多大?

拓展3:拾遗漏补一再谈分布式锁..

Redlock使用场景...

扩展阅读.

拓展4:朝生暮死-过期策...

过期的key集......

定时扫描策略....

从库的过期策略.

拓展5:优胜劣汰一LRU.

LRU算法.....

近似LRU算法.

扩展阅读,

思考&作业.

拓展6:平波缓进一懒惰删際......

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

flush..

异步队列.

AOF Svnc也很....

更多异步删除.....

扩展阅读......

拓展7:妙手仁心一优雅地使用 Jedis.

重试.

作业.

拓展8:居安思危一保护 Redis.

端口安全....

Lua脚本安全

SSL代理.

小结.

拓展9:隔墙有耳一Redis 安全通信.........

spiped原理.

spiped使用入门,

作业..

源码1:极度深寒-探索 [字符串」内部结构....

embstr vs raw....

扩容策略......


思考.

源码2:极度深寒一探索 [字典」内部....

dict内部结构

渐进式rehash.

查找过程

hash函数.

hash攻击.

扩容条件.

缩容条件.

set的结构.

思考

源码2:极度深寒一探索 「字典」内部........

dict内部结构

渐进式rehash.

查找过程

hash函数.

hash攻击...

扩容条件.

缩容条件

set的结构.

思考.....

源码3:极度深寒一探索 「压缩列表」内部.

增加元素,

级联更新

IntSet小整数集合,

思考.

源码4:极度深寒一探索 「快速列表」内部

每个ziplist 存多少元素?

压缩深度...

扩展阅读,

源码5:极度深寒一探索 「 跳跃列表」内部结构...

基本结构.

查找过程,

随机层数

插入过程.

删除过程

更新过程

如果score值都一样呢?

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

思考.

源码6:极度深寒一探索 「紧凑列表」内部,

级联更新.

取代ziplist

源码7:极度深寒一探索「基数树」内部,

应用

结构.

增删节点,

思考.....

尾声:百尺竿头一继续深造指南 ...........

参考资料

正文:

开篇:授人以鱼不若授人以渔——Redis可以用来做什么?


Redis可以做什么?

?


?


基础:万丈高楼平地起——Redis基础数据结构

?


分布式锁

?


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

?


?


MGET指令的操作过程

?


?


Stream消息太多怎么办?

?


PEL如何避免消息丢失?

?


Redis每秒执行多少次指令?

?


Redis内存占用多大?

?


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

?


?

由于内容过多就不一一展示了,有需要完整资料的朋友请私信03免费领取哟!

?

相关推荐

如何检查 Linux 服务器是物理服务器还是虚拟服务器?

在企业级运维、故障排查和性能调优过程中,准确了解服务器的运行环境至关重要。无论是物理机还是虚拟机,都存在各自的优势与限制。在很多场景下,尤其是当你继承一台服务器而不清楚底层硬件细节时,如何快速辨识它是...

第四节 Windows 系统 Docker 安装全指南

一、Docker在Windows上的运行原理(一)架构限制说明Docker本质上依赖Linux内核特性(如Namespaces、Cgroups等),因此在Windows系统上无法直...

C++ std:shared_ptr自定义allocator引入内存池

当C++项目里做了大量的动态内存分配与释放,可能会导致内存碎片,使系统性能降低。当动态内存分配的开销变得不容忽视时,一种解决办法是一次从操作系统分配一块大的静态内存作为内存池进行手动管理,堆对象内存分...

Activiti 8.0.0 发布,业务流程管理与工作流系统

Activiti8.0.0现已发布。Activiti是一个业务流程管理(BPM)和工作流系统,适用于开发人员和系统管理员。其核心是超快速、稳定的BPMN2流程引擎。Activiti可以...

MyBatis动态SQL的5种高级玩法,90%的人只用过3种

MyBatis动态SQL在日常开发中频繁使用,但大多数开发者仅掌握基础标签。本文将介绍五种高阶技巧,助你解锁更灵活的SQL控制能力。一、智能修剪(Trim标签)应用场景:动态处理字段更新,替代<...

Springboot数据访问(整合Mybatis Plus)

Springboot整合MybatisPlus1、创建数据表2、引入maven依赖mybatis-plus-boot-starter主要引入这个依赖,其他相关的依赖在这里就不写了。3、项目结构目录h...

盘点金州勇士在奥克兰13年的13大球星 满满的全是...

见证了两个月前勇士与猛龙那个史诗般的系列赛后,甲骨文球馆正式成为了历史。那个大大的红色标志被一个字母一个字母地移除,在周四,一切都成为了过去式。然而这座,别名为“Roaracle”(译注:Roar怒吼...

Mybatis入门看这一篇就够了(mybatis快速入门)

什么是MyBatisMyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且改名为M...

Springboot数据访问(整合druid数据源)

Springboot整合druid数据源基本概念SpringBoot默认的数据源是:2.0之前:org.apache.tomcat.jdbc.pool.DataSource2.0及之后:com.z...

Linux 中的 &quot;/etc/profile.d&quot; 目录有什么作用 ?

什么是/etc/profile.d/目录?/etc/profile.d/目录是Linux系统不可或缺的一部分保留配置脚本。它与/etc/profile文件相关联,这是一个启动脚本,该脚...

企业数据库安全管理规范(企业数据库安全管理规范最新版)

1.目的为规范数据库系统安全使用活动,降低因使用不当而带来的安全风险,保障数据库系统及相关应用系统的安全,特制定本数据库安全管理规范。2.适用范围本规范中所定义的数据管理内容,特指存放在信息系统数据库...

Oracle 伪列!这些隐藏用法你都知道吗?

在Oracle数据库中,有几位特殊的“成员”——伪列,它们虽然不是表中真实存在的物理列,但却能在数据查询、处理过程中发挥出意想不到的强大作用。今天给大家分享Oracle伪列的使用技巧,无论...

Oracle 高效处理数据的隐藏神器:临时表妙用

各位数据库搬砖人,在Oracle的代码世界里闯荡,处理复杂业务时,是不是总被数据“搅得头大”?今天给大家安利一个超实用的隐藏神器——临时表!当你需要临时存储中间计算结果,又不想污染正式数据表...

Oracle 数据库查询:多表查询(oracle多表关联查询)

一、多表查询基础1.JOIN操作-INNERJOIN:返回两个表中满足连接条件的匹配行,不保留未匹配数据。SELECTa.emp_id,b.dept_nameFROMempl...

一文掌握怎么利用Shell+Python实现多数据源的异地备份程序

简介:在信息化时代,数据安全和业务连续性已成为企业和个人用户关注的焦点。无论是网站数据、数据库、日志文件,还是用户上传的文档、图片等,数据一旦丢失,损失难以估量。尤其是当数据分布在多个不同的目录、服务...

取消回复欢迎 发表评论: