Redis 基本数据 持久化 2018-09-09

基本数据类型以及操作

基本数据类型: string, hash, list, set, sort set
TO DO: 总结数据操作及应用场景

持久化

两种方式: RDB 和 AOF

选择和使用

(1)只做缓存: 可以都不同
(2)同时开启两种方式: 重启时首先加载AOF文件,因为AOF文件比RDB完整
(3)不要只用AOF,RDB做后备用途。在Slave上持久化RDB文件,15分钟备份一次,只保留save 900 1 这条规则
(4)启动AOF,最坏丢失不超过2秒数据。 a.带来一定的IO b.rewrite 阻塞写到新文件 可以将64M 改写为5G以上
(5)不使用AOF 仅靠Master-Slave Replication 实现高可用性,省掉IO,但是如果Master/Slave同时当掉,丢失十几分钟数据,启动脚本时比较 Master/Slave中较新的RDB文件载入。(新浪架构)

启动时先读AOF?

RDB

dump.rdb
持久化可以在指定的时间间隔内生成数据集的时间点快照
默认快照触发条件:

  • 1分钟改1万次
  • or 5分钟改10次
  • or 15分钟改1次

RDB 的优点:

(1)适合大规模数据恢复
(2)对数据完整性和一致性要求不高

RDB 的缺点:

(1) 丢失最后一次保存的数据
(2)本身数据集大,fork() 可能会非常耗时,造成服务器在某某毫秒内停止处理客户端

AOF (Append only log)

以日志的形式来记录每个操作,并在服务器启动时,通过重新执行这些命令来还原数据集。 最多丢失一秒数据。
redis.conf -> appendonly.aof

AOF 启动 : redis-server /../redis_aof.conf
AOF 修复 : redis-check-aof --fix appendonly.aof (网络故障等)

相关配置

No-appendfsync-on-rewrite no
auto-aof-rewrite-min-percentage 100
auto-aof-rewrite-min-size 64mb (默认)

Appendfsync

  • Always : 同步持久化,每次发生数据变更立即记录到硬盘,性能差,数据完整性好
  • Everysec : 默认配置。异步操作,每秒记录一次,有可能1秒数据丢失
  • No

Rewrite

  • AOF文件追加会越来越大,为避免这种情况,新增重写机制,当AOF文件大小超过设定阈值,Redis会启动AOF文件内容压缩,只保留恢复数据的最小指令集,可以使用bgrewriteaof
  • fork一条新进程 将整个内存钟数据库内容用命令的形式重写一个新的aof文件
  • 记录上一个重写AOF文件大小,默认配置是当AOF文件大小是上次rewrite后的一倍且文件大于64M时触发 redis.conf中(auto-aof-rewrite-min-percentage 100 auto-aof-rewrite-min-size 64mb)

AOF优点

(1)配置灵活:每秒同步,每修改同步,不同步

AOF缺点

(1)相同数据aof文件大于rdb
(2)AOF运行效率慢于rdb,不同步效率和rdb相同

参考博客:
官网
解析配置文件 redis.conf、Redis持久化RDB、Redis的主从复制

你可能感兴趣的:(Redis 基本数据 持久化 2018-09-09)