主页

RESP协议 (Redis Serialization Protocol) 解析

RESP 协议概述 Redis Serialization Protocol (RESP) 是Redis客户端与服务器之间通信的标准协议。它被设计为一个平衡了多种需求的协议: 简单易实现:降低客户端开发难度 解析高效:能够快速处理大量命令 可读性强:便于调试和理解 RESP本质上是一个二进制安全的序列化协议,可以编码多种数据类型,包括整数、字符串、数组等。尽管主要用于Redis,但也可用于其他客户端-服务器项目。 RESP 协议演进 Redis 1.2:首次引入RESP协议,使用是可选的 Redis 2.0:RESP2成为标准通信协议 Redis 6.0:引入RESP3(RESP2的超集),通过HELLO命令支持协议版本升级 当前状态:Red...

阅读更多

Redis AOF重写机制详解

Redis AOF 重写 +--------------------------------------------------------+ | Redis主进程 | | | | +---------------+ 写命令 +----------------------+ | | | |----------->| | | | | 命令处理程序 | | AOF缓冲区(ao...

阅读更多

Redis的单线程网络模型解析:高性能背后的设计

Redis在6.0版本之前采用单线程网络模型,尽管后续版本引入了多线程处理,但很多生产环境仍在使用基于单线程模型的Redis 4.0/5.0。 众多业务证明,单线程网络模型足够处理大部分情况,本文深入解析Redis单线程架构的设计原理及其高性能背后的秘密。 单线程Reactor模型概述 Redis采用的是单线程Reactor模式结合IO多路复用技术, 事件循环(Event Loop): 核心组件,负责管理和分发所有事件 实现在ae.c中的aeEventLoop结构 基于epoll/kqueue/select机制 事件处理: 连接接受事件:新客户端连接到达时触发acceptHandler...

阅读更多

CI/CD加速:搭建高性能本地Docker Runner实现GitHub Actions自动化部署

搭建本地 docker runner github action的额度限制 github action 额度有限制,也有一些环境依赖特殊 选择本地runner,也让环境统一,打算跑在docker上 docker runner 构建 调研 调研了几个方案, https://github.com/myoung34/docker-github-actions-runner 这个用的人多,较为简单的 docker,虽然不支持横向扩展,但是也够了 支持横向扩展的多为k8s,参考 https://github.com/jonico/awesome-runners?tab=readme-ov-file 感觉有点重,目前没有k8s 环境,放弃 构建demo fork 了 pyth...

阅读更多

Redis AOF同步刷盘机制:性能瓶颈分析与优化

问题概述 在Redis生产环境中,有时会遇到这样一种情况:系统突然出现大量IO超时,而Redis日志中出现如下警告: Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis. AOF持久化过程中,fsync操作耗时过长,进而影响了Redis的整体性能 问题分析与定位 现象描述 单个Redis实例短时间内出现大量IO timeout报错 Redis日志显示异步AOF fsync耗时过长 服务器监控显示磁盘利用率(util)达到1...

阅读更多

Redis核心架构解析:从数据结构到主从复制

Redis作为高性能的内存键值数据库,凭借其丰富的数据结构和灵活的功能设计,已成为现代应用架构中不可或缺的组件。本文将深入剖析Redis的整体架构设计,帮助开发者和架构师更好地理解Redis的内部工作原理。 Redis核心特性概览 作为内存KV数据库,Redis提供了以下核心功能: 丰富的数据结构:string、list、hash、set、sorted-set、stream、geo、hyperloglog等 发布订阅机制:通过pubsub模块实现消息的发布与订阅 持久化方案:AOF和RDB两种数据持久化方式 内存管理:基于jemalloc实现高效的内存分配与回收 Redis服务器核心架构 主体结构 Redis的核心是redisServer结构体,它包含了...

阅读更多

Docker Compose V2升级指南:新特性、兼容性变更与最佳实践

docker compose docker-compose 这种命令行是v1 docker compose 这种命令行是v2 有些docker-compose.yaml 语法 必须要升级到v2 构建 升级 docker compose v2 升级 mac/win 下安装最新docker desktop即可 ubuntu24 下默认apt 还是v1 因此需要手动下载 步骤 主要是要放到~/.docker/cli-plugins 下 DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} mkdir -p $DOCKER_CONFIG/cli-plugins curl -SL https://github.com/docker/co...

阅读更多