redis学习

1、数据结构

redis实现自己的数据结构 SDS简单字符串,执行 set msg 'hello word' 会生成一个新的键值对,

SDS定义:

int len;//已用字符长长度

int free;//剩余字符串长度

char buf[];//字符数组 用于保存已有字符串

2、RDB

redis有两个命令 生成RDB文件,save 和 bgsave。RDB通过保存数据库中键值对来记录数据。

save为阻塞式生成RDB文件

bgsave会用一个子进程负责创建RDB文件。

RDB文件的载入是在 服务器启动时就进行,且AOF文件要先于RDB文件载入,并且AOF要优先于RDB。

在BGSAVE执行期间虽然redis服务器可以继续处理客户端请求,但在BGSAVE命令执行期间,服务器处理save bgsave bgrewriteaof命令和平时有区别。

期间 客户端的save命令会被拒绝,避免竞争条件。

同时 bgsave 和 bgrewriteaof也会被拒绝,原因同上。

bgsave和bgrewriteaof会在bgsave执行完成后运行。

在RDB文件载入时,服务器会一直处于阻塞状态,直至载入完成。

自动间隔保存:

BGSAVE在不阻塞服务器的情况下,通过配置save选项设置多个保存条件,只要任意条件满足即可执行bgsave命令。

如 save 900  1    900秒内对数据库至少修改了一次

   save 600   10

可通过配置文件进行上述配置,如不设置服务器有默认配置。

redis服务器周期性函数servercron默认每100毫秒会扫描一次是否满足执行条件。

对于不同类型的键值对,RDB文件会使用不同的方式保存。

3、AOF

AOF通过保存服务器所执行的写命令来记录数据。

客户端--发送写命令--服务器--保存被执行的写命令--AOF文件

AOF持久化功能实现分为 命令追加append 、文件写入、文件同步sync三个步骤。

redis通过appendfsync命令设置同步机制:

appendfsync  always  每次执行写入都会执行同步

appendfsync  everysec 每秒执行

appendfsync  no 跟随操作系统

AOF重写,redis会将多条类似命令整合成一条执行。它不是读取和分析现有AOF文件内容,而是直接从数据库读取状态,用一条命令代替AOF文件多条命令。


redis同时允许开启  RDB 和 AOF ,载入数据时会优先载入 AOF文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值