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...
Linux进程诊断技巧:使用pwdx命令追踪进程工作目录与故障排查应用
pwdx
pwdx {pid}
显示进程的当前工作目录
主要是不需要root 权限, 也不用 cat /proc/{pid} 一大堆内容了
example
yxc@yxc-MS-7B89:~/code/2410$ ps aux | grep clash
yxc 34838 0.0 0.0 1239312 20604 ? Sl Oct29 2:12 ./clash-linux-amd64-v3-v1.18.0
yxc 391748 0.0 0.0 17812 2304 pts/1 S+ 22:15 0:00 grep --color=auto clash
yxc@yxc-MS-7B89:~/code/241...
共计 167 篇文章,21 页。