Redis字典
redis内存管理
内存申请:本质调用了malloc(calloc同malloc一样)函数,加上了异常处理和内存统计。
异常处理:内存申请失败后的处理函数---------------》可以自定义
内存统计:更新总申请内存大小
内存调整:调用了realloc()函数,加上了异常处理和内存统计。
内存释放:调用了free()函数,加上了内存统计。
Redis慢查询日志(内存中)
Slowlog 用于记录最新 N 条执行时间超过 M 毫秒的命令
数据结构:双链表,先进先出
Redis IO
封装了对内存和文件的io操作。
redis持久化(两种持久化方式可以单独使用一种,也可以二者同时使用)
1.rdb
备份整个数据集。 数据完整性:文件尾部添加检验和(可以禁用)。
两种方式:
1.服务器进程执行备份
2.服务器进程fork一个子进程进行数据集的备份(只能有一个备份子进程)
2.aof
备份改变数据库状态的命令。
Aof重写-》根据数据库中的数据重写一个新的aof文件,每条记录有一个set语句,重写
完成后,用新的aof文件代替旧的aof文件。
Redis bio(后台io服务)
1.关闭fd
2.同步aof文件
每种服务对应一个线程,每种任务对应一个链表,每次线程从对应链表中取出任务执行,如果链表为空,线程阻塞,当链表不为空时,对应线程被唤醒。
Redis数据结构:
String字符串(key-value类型)
Hash字典
List 双向链表
Set 数组+链表
Sorted set有序集合 跳跃表