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容器网络:启用IPv6支持的完整配置与实战案例分析
/etc/docker/daemon.json 配置:
{
"ipv6": true,
"fixed-cidr-v6": "fd00:1:1:1::/64",
"experimental": true,
"ip6tables": true
}
重启docker后生效
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...
共计 128 篇文章,16 页。