简介
Redis是基于内存的数据库,服务器进程退出后,内存中的数据会丢失。为了解决这个问题,Redis提供了RDB持久化机制,将内存中的数据保存到硬盘,从而避免数据意外丢失。
RDB持久化
RDB持久化将某个时间点上的数据库状态保存到一个RDB文件,这个RDB文件是一个经过压缩的二进制文件,Redis服务器可以通过读取RDB文件还原数据库状态。
跳跃表是一种以O(log N)期望时间支持查找、插入、删除操作的、有序的数据结构。
Redis使用跳跃表作为有序集合键的底层实现之一。
跳表的基本实现原理参考:《Skip lists: a probabilistic alternative to balanced trees》
进程收到SIGABRT
信号异常退出,异常调用栈显示__stack_chk_fail
原因分析: __stack_chk_fail
说明发生了缓冲区溢出,canary被破坏。这说明代码设置GCC编译选项fstack-protector,开启了栈保护机制canary
定位思路: