【Redis】Redis持久化

Redis数据持久化

Redis的特性: 易扩展,大数据高性能,多样灵活的数据模型,受限内存

Redis默认端口: 6379

Redis数据持久化分为有两种: 

RDB: 每隔一段时间就把内存数据写入磁盘,如果是备份的话就反过来,从文件中把数据读到内存中。在进行持久化的时候,会由父进程fork出一个子进程,子进程会把数据保存到一个临时文件中,等到持久化完成,就用临时文件替换上次持久化的文件。这一过程中父进程不进行任何的IO流操作

如何触发RDB的操作?

 (1)直接输入save

(2)flush操作

(3)触发redis.conf中的配置   save seconds changes

  • 900s内有一次修改,300s内有10次修改,60s内有10000次修改。都会触发RDB。如果不想使用策略可以save ""

AOF: append only file 是一种只追加文件,用日记的形式来记录每一个写操作,将Redis执行的写指令记录下来。改文件只允许追加,不允许修改。当AOF文件到达一定大小(文件大于上一次rewrite文件的100%,并且大于64M)的时候会进行rewrite。rewrite是指把aof文件的内容进行压缩,指保留可以回复数据的最小指令,可以使用bgrewriteaof。重写的原理也是先写临时文件最后再替换,重写的时候并没有读取旧的aod文件,而是把内存中的数据用命令又重写了一份保存到新的AOF文件中。

AOF的fsync策略

Always:同步持久化,每次数据发生变更的时候就会记录到磁盘中,性能较差数据完整

Everysec:默认设置,异步操作,每秒就记录一次。但是如果宕机会损失一秒的操作

no: 不持久化

RDB和AOF的优缺点?

RDB:恢复速度快,但是可能会丢失数据

AOF:数据完整性高,但是恢复速度慢。具有重写机制,以至于AOF文件不至于过大

当数据量大并且不是特别关注数据完整性的时候,选择rdb。对数据完整性要求较高的时候,选择AOF。

RDB和AOF是否可以共存

可以,但是重启redis的时候默认会先找AOF文件恢复

Redis缓存过期策略:

Maxmemory-policy :redis容量超过设置值的时候

1. Volatile-lru: IRU算法移除key,只针对设置过期时间

2. Allkeys-LRU: 对于所有的key用LRU算法移除

3. Volatile-ramdon: 对设置了过期时间的,进行随机删除

4. allkeys-ramdon:所有键值对进行随机删除

5. volatile-ttl:最小ttl进行删除

6. noeviction: 不进行移除,针对写操作,只是返回错误信息

noeviction [ɪ'vɪkʃn]

知识点小记:

  • 当持久化文件错误的时候,可以用工具修复

    redis-check-aof

    redis-check-dump 

  • redis日志有4个级别:debug verbose notice warning

  • 默认最大连接数maxclient 10000 
原文地址:https://www.cnblogs.com/amberbar/p/10147125.html