June 08, 2017

Redis源码学习之复制

占坑,有时间再整理

May 30, 2017

Redis源码学习之Redis事务

Redis作为一个内存型数据库,同样支持传统数据库的事务特性。这篇文章会从源代码角度来分析Redis中事务的实现原理。

What

Redis事务提供了一种将多个命令请求打包,然后一次性、按照顺序地执行多个命令的机制,并且在事务执行的期间,服务器不会中断事务而去执行其他不在事务中的命令请求,它会把事务中所有的命令都执行完毕才会去执行其他的命令。

How

Redis中提供了multi、discard、exec、watch、unwatch这几个命令来实现事务的功能。

Redis的事务始于multi命令,之后跟着要在事务中执行的命令,终于exec命令或者discard命令。加入事务中的所有命令......

May 20, 2017

Redis源码学习之事件驱动

Redis基于多路复用技术实现了一套简单的事件驱动库,代码在ae.h、ae.c以及ae_epoll.c、ae_evport.c和ae_kqueue.c、ae_select.c这几个文件中。其中ae表示的是antirez eventloop的意思。

Redis里面包含两种事件类型:FileEvent和TimeEvent。

Redis采用IO多路复用技术,所有的事件都是在一个线程中进行处理。Redis的事件驱动模型可以以以下为代码进行表示:

int main(int argc,char **argv)

{

while(true) {

// 等待事件到来:wait4Ev......

May 16, 2017

Redis内存

内存消耗

Redis里面内存统计指标

属性名

属性说明

used_memory

Redis分配器分配的内存总量,也就是内部存储的所有数据的内存占用量

used_memory_human

used_memory的可读形式

used_memory

操作系统角度显示Redis进程占用的内存总量

used_memory_peak

内存使用的最大值,表示used_memory的峰值

used_memory_peak_human

以可读的形式表示used_memory_peak

used_memory_lua

Lua引擎消耗的内存

mem_fragmentation......