代码改变世界

随笔档案-2014年03月

深入剖析 redis RDB 持久化策略

2014-03-26 12:31 by 捣乱小子, 12527 阅读, 收藏, 编辑
摘要: 简介 redis 持久化 RDB、AOFredis 提供两种持久化方式:RDB 和 AOF。redis 允许两者结合,也允许两者同时关闭。RDB 可以定时备份内存中的数据集。服务器启动的时候,可以从 RDB 文件中回复数据集。AOF 可以记录服务器的所有写操作。在服务器重新启动的时候,会把所有的写操作重新执行一遍,从而实现数据备份。当写操作集过大(比原有的数据集还大),redis 会重写写操作集。本篇主要讲的是 RDB 持久化,了解 RDB 的数据保存结构和运作机制。redis 主要在 rdb.h 和 rdb.c 两个文件中实现 RDB 的操作。数据结构 rio持久化的 IO 操作在 rio. 阅读全文

深入剖析 redis 事件驱动

2014-03-09 15:28 by 捣乱小子, 11855 阅读, 收藏, 编辑
摘要: 概述redis 内部有一个小型的事件驱动,它和 libevent 网络库的事件驱动一样,都是依托 I/O 多路复用技术支撑起来的。利用 I/O 多路复用技术,监听感兴趣的文件 I/O 事件,例如读事件,写事件等,同时也要维护一个以文件描述符为主键,数据为某个预设函数的事件表,这里其实就是一个数组或者链表 。当事件触发时,比如某个文件描述符可读,系统会返回文件描述符值,用这个值在事件表中找到相应的数据项,从而实现回调。同样的,定时事件也是可以实现的,因为系统提供的 I/O 多路复用技术中的函数允许我们设定时间值。上面一段话比较综合,可能需要一些 linux 系统编程和网络编程的基础,但你会看到多 阅读全文