0%

简介

Redis提供了AOF(append only file)持久化功能,通过保存服务器执行的写命令的方式记录数据库状态。本文介绍如下内容:

  • AOF持久化的实现 (命令追加、文件写入、AOF重写、AOF后台重写)
  • 如何通过AOF文件还原数据库
  • AOF持久化的配置选项
  • AOF和RDB两种持久化方式的比较
阅读全文 »

简介

Redis是基于内存的数据库,服务器进程退出后,内存中的数据会丢失。为了解决这个问题,Redis提供了RDB持久化机制,将内存中的数据保存到硬盘,从而避免数据意外丢失。

RDB持久化

RDB持久化将某个时间点上的数据库状态保存到一个RDB文件,这个RDB文件是一个经过压缩的二进制文件,Redis服务器可以通过读取RDB文件还原数据库状态。

阅读全文 »

前言

介绍Redis数据库的实现,解答以下几个问题:

  • Redis服务器是怎么保存数据库的?客户端又是怎么切换数据库的?
  • 数据库的增、删、改、查的实现
  • 键的过期时间是怎么保存的,又是如何删除的?怎么判断一个键是否过期?
  • 过期键的删除策略有哪些?每种策略的优缺点分析?Redis采用的是哪种策略,具体又是怎么实现的?
阅读全文 »

前言

LeetCode链表题汇总,记录解题思路,C/C++语言实现。

LeetCode链表题

阅读全文 »

前言

Redis没有直接使用基础数据结构来实现数据库,而是基于这些数据结构创建了一个对象系统。这个系统包含字符串对象、列表对象、哈希对象、集合对象、有序集合对象。

1. Redis3.0中的6种基础数据结构

阅读全文 »

什么是三大范式

三大范式是数据库设计遵循的规范, 分别是:

  • 第一范式(1NF):表中每列不可再拆分
  • 第二范式(2NF):1NF基础上,要求非主键列完全依赖于主键,不能只依赖于主键的一部分(针对联合主键)
  • 第三范式(3NF):2NF基础上, 要求任何非主键列必须直接依赖于主键,不能是传递依赖
阅读全文 »

问题描述

进程收到SIGABRT信号异常退出,异常调用栈显示__stack_chk_fail

原因分析和定位思路

原因分析: __stack_chk_fail说明发生了缓冲区溢出,canary被破坏。这说明代码设置GCC编译选项fstack-protector,开启了栈保护机制canary

定位思路:

阅读全文 »

前言

Redis中,整数集合是集合键的底层之一。

当一个集合只包含整数元素,且这个集合中元素个数不多的情况下,Redis就会使用整数集合作为集合键的底层实现。

1. 整数集合的实现

阅读全文 »

跳跃表简介

跳跃表是一种以O(log N)期望时间支持查找、插入、删除操作的、有序的数据结构。其性能和红黑树相当,且跳跃表实现更为简单。

如何理解”跳跃“二字

阅读全文 »