redis基本常识

2019-07-21  本文已影响0人  农民工进城

本章要点

1.键值失效策略

1.1 数据淘汰策略
1.2 redis主键失效机制

2.数据持久化

redis是基础内存的数据库,为了防止数据丢失,所以要对数据进行持久化,redis的持久化有两种方式:AOF和RDB。

2.1 RDB持久化:

RDB指把当前的数据生成快照,以RDB文件(二进制压缩文件)的形式存储,redis可以通过RDB文件,还原到生成RDB文件时的数据库状态,到可以手动执行,也可以设置定期自动执行。有两个命令可生成RDB文件save(阻塞)、bgsave(非阻塞)。
-- save:阻塞模式,此时服务器不能接受其他命令
-- bgsave:非阻塞模式,主进程fork子进程,然后有子进程生成RDB文件,主进程继续接受和处理其他命令
配置是在redis.conf文件里进行配置:

save 900 1 #表示如果900秒内至少1个key发生变化(新增、修改和删除),则重写RDB文件
save 300 10 #表示如果每300秒内至少10个key发生变化(新增、修改和删除),则重写RDB文件;
save 60 10000 #表示如果每60秒内至少10000个key发生变化(新增、修改和删除),则重写RDB文件。

只要满足其一,就会进行重写RDB文件

2.2AOF持久化:

AOF通过保存记录Redis服务器所执行的写命令来记录数据库的状态,但他并不是记录客户端发送的原始命令,而是记录转换之后的符合Redis协议的命令
AOF实现过程:
AOF持久化流程主要包括:命令追加(append),文件同步(sync),文件重写(rewrite),重启加载(load)四步骤
- 当AOF持久化功能打开时,服务器在执行完命令后,会将所有的写入命令以协议的格式append追加到aof_buf缓冲区末尾
- AOF缓冲区向硬盘做sync同步
- 随着AOF文件越来越大,需定期对AOF文件rewrite重写,达到压缩
- 当redis服务重启,可load加载AOF文件进行恢复

Redis会定期做aof重写,压缩aof文件日志大小

在redis实例重启时,优先使用aof来恢复内存的状态,如果没有aof日志,就会使用rdb文件来恢复。

加载顺序.jpg

文件的载入是在redis启动时自动载入的,不需要人工干预,载入RDB时会一直阻塞,直到完全载入为止

3.Redis线程模型(reactor)

大家直到Redis是单线程的,但是具体的线程模型未必清楚。

其实Redis是一个单进程单线程且采用多路I/O复用模型,非阻塞IO技术, 使之可以同时处理多个连接请求(减少网络IO耗时), 也不需要关心锁,线程切换等资源消耗问题;

上一篇 下一篇

猜你喜欢

热点阅读