除了RDB持久化功能之外,Redis还提供了AOF(Append Only File)持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的,如图11-1所示。
Redis 设计与实现-RDB 持久化
本文首先介绍Redis服务器保存和载人RDB文件的方法,重点说明 SAVE 命令和 BGSAVE 命令的实现方式。之后,本章会继续介绍Redis服务器自动保存功能的实现原理。
在介绍完关于保存和载入RDB文件方面的内容之后,我们会详细分析RDB文件中的各个组成部分,并说明这些部分的结构和含义。
Redis 设计与实现-数据库
xxe 攻击及防御
Redis 设计与实现-复制
在 Redis 中, 用户可以通过执行 SLAVEOF 命令或者设置 slaveof 选项, 让一个服务器去复制 (replicate) 另一个服务器, 我们称呼被复制的服务器为主服务器 (master), 而对主服务器进行复制的服务器则被称为从服务器 (slave), 如图15-1所示:
本文首先介绍 Redis 在 2.8 版本以前使用的旧版复制功能的实现原理, 并说明旧版复制功能在处理断线后重新连接的从服务器时, 会遇上怎样的低效情况。
接着, 本章将介绍 Redis 从 2.8 版本开始使用的新版复制功能是如何通过部分重同步来解决旧版复制功能的低效问题的, 并说明部分重同步的实现原理。
在此之后, 本章将列举 SLAVEOF 命令的具体实现步骤, 并在本文最后, 说明主从服务器心跳检测机制的实现原理, 并对基于心跳检测实现的几个功能进行介绍。
idea 中 git 回退远程仓库版本
工作中遇到,代码已提交并已提交到远程仓库,现需要回退到之前版本,记录如下:
Redis 设计与实现-数据结构
1. 前言
Redis 数据库里面的每个键值对 (key-value pair) 都是由对象 (object) 组成的, 其中:
- 数据库键总是一个字符串对象 (string object);
- 而数据库键的值则可以是字符串对象、列表对象 (list object)、哈希对象 (hash object)、集合对象 (set object)、有序集合对象 (sorted set object) 这五种对象中的其中一种。
比如说, 执行以下命令将在数据库中创建一个键为字符串对象, 值也为字符串对象的键值对:
1 | redis> SET msg "helloworld" |
Redis 的五种不同类型的对象底层至少采用两种以上不同的数据结构实现。本文将削析这些对象所使用的底层数据结构。
神奇的 SQL 之别样的写法 → 行行比较
玩转Java8Stream(四、IntStream)
IntStream 是特殊的 Stream,但有一些操作符是 IntStream 独有的;话不多说,开始玩转 IntStream 吧。