0%

前言

通过阅读Redis源码,配合GDB和抓包等调试手段,分析Redis发布订阅的实现原理,思考相关问题。

源码版本:Redis 6.0.10

思考问题

阅读全文 »

背景

ziplist是一种为节约内存而开发的数据结构,本质是一个字节数组。

ziplist是列表键和哈希键的底层实现之一,也用于quicklist的实现。

阅读全文 »

前言

字典是一种用于保存键值对的数据结构,Redis数据库使用字典做为底层实现,字典也是哈希键的底层实现之一。

C语言中并没有内置字典这个数据结构,Redis自己实现了字典。

以下结合源码分析Redis字典的设计与实现,源码版本:Redis 6.0.10

阅读全文 »

前言

链表在Redis中的应用非常广泛,链表是列表键的底层实现之一,发布订阅,慢查询,监视器等功能也用到了链表。

以下给出Redis中链表相关的一些思考问题,通过源码分析,给出问题的答案,掌握链表的底层实现原理和设计思路。

源码版本:Redis 6.0.10

阅读全文 »

前言

Redis是用C语言开发的,但并没有直接使用C语言数组去表示字符串,而是使用简单动态字符串(Simple dynamic String,简称SDS)作为字符串的底层实现。

以下给出SDS相关的一些常见问题,通过源码分析和实际验证,思考这些问题的答案,了解实现原理和设计思路。

阅读全文 »

问题描述

业务背景: 有一台由多个Docker容器组成的仿真设备环境,1个Docker部署Redis服务端,剩余每个Docker都作为Redis客户端,用于模拟一块单板。

问题: 仿真设备启动中,概率出现Redis的某个字符串键被不符合预期地改写成空串,导致客户端Docker从Redis获取的数据有问题。需要定位是哪个Docker上的哪个进程改写了Redis数据库。

阅读全文 »