1. 单线程模型的真相 1.1 「Redis 是单线程」到底指什么 这句话必须精确到"命令执行“这个层面: Redis 用一个主线程串行地执行所有
1. 过期时间是怎么存的 1.1 过期字典 expires Redis 的每个数据库(redisDb)里有两个核心字典: typedef struct redisDb { dict *dict; // 键空间:所有的 key → value dict *expires; // 过期字典:设置了 TTL
1. 为什么需要持久化 Redis 把数据放在内存里,进程一退出数据就全没了。持久化就是把内存数据写到磁盘,让重启后能恢复。 Redis 提供两种机制,思路完全不同: RDB
1. Redis 事务 1.1 基本命令 MULTI # 开启事务,之后的命令进入队列 ... 命令 ... # 每条命令返回 QUEUED,不执行 EXEC # 执行队列里的所有命令,返回结果数组 DISCARD # 放弃事
1. 发布订阅(Pub/Sub) 1.1 基本命令 # 订阅端 SUBSCRIBE channel [channel ...] # 订阅一个或多个频道 PSUBSCRIBE pattern [pattern ...] # 按模式订阅(glob 风格) UNSUBSCRIBE [channel ...] # 取消订阅(不带参数取消
1. 为什么需要主从复制 单机 Redis 有三个无法回避的问题: 单点故障:机器宕机、进程崩溃就完全不可用。即使有持久化,重启 + 加载 10GB 数据也要几分钟; 读性能上
1. 为什么需要哨兵 第 10 篇讲的主从复制解决了数据冗余和读扩展,但留下一个致命缺口:主节点挂了怎么办? 纯主从架构下需要人工介入: 1. 运维收到告警(可
1. 为什么需要 Cluster 哨兵解决了高可用,但没解决扩展性: 存储受限于单机内存:所有数据都在一个主节点上,超过 10GB 就开始有 fork 慢、恢复慢、全量同步压力大的问
1. 分布式锁要解决什么问题 单机程序里用 synchronized、Mutex 就能保护临界区,因为所有线程在同一个进程的同一块内存里。但在分布式系
1. 缓存的基本模式 在讲问题之前,先明确缓存的三种经典读写模式。 1.1 Cache Aside(旁路缓存,最常用) 读: 1. 先读缓存 2. 命中 → 直接返回 3. 未命中 → 读数据
1. 排查方法论 线上出现"Redis 慢"时,不要一上来就乱调参数。按这个顺序定位: 1. 【确认现象】到底是什么慢? ├─ 所有请求都
1. 客户端选型 Go 生态里的 Redis 客户端: 库 说明 redis/go-redis 事实标准。功能最全(哨兵、集群、Stream、RESP3、OpenTelemetry),社区活跃,文
1. PostgreSQL简介 1.1 什么是PostgreSQL? PostgreSQL(简称Postgres)是一个功能强大的开源对象关系型数据库管理
1. 概述 本章将详细介绍PostgreSQL的数据库基础操作,包括创建、删除、修改数据库,以及与MySQL的对比。 2. 数据库操作 2.1 查看所有数据库 --
1. 概述 PostgreSQL拥有非常丰富的数据类型系统,远超MySQL。本章将详细介绍PostgreSQL的各种数据类型,并与MySQL进行对
1. 概述 本章介绍PostgreSQL中表的创建、修改和管理,并与MySQL进行详细对比。 2. 创建表 2.1 基本语法 -- PostgreSQL CREATE TABLE users ( id SERIAL PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) NOT
1. 概述 **约束(Constraint)**是数据库在存储层面强制保证数据完整性的规则。把校验放在数据库层而非全靠应用层,好处是:无论数据从哪
1. 概述 本章详细介绍PostgreSQL的基础查询语句,包括SELECT、WHERE、ORDER BY等,并与MySQL进行对比。 2. SELECT
1. 概述 多表连接(JOIN)是关系型数据库的核心功能。本章详细介绍PostgreSQL的各种JOIN类型及其应用场景。 2. JOIN类型概览 LEFT JOIN: 返
1. 概述 聚合函数对一组值进行计算并返回单个值。本章详细介绍PostgreSQL的聚合函数、分组查询和HAVING子句。 2. 基本聚合函数 2.1 COUN