Redis 入门到精通(五)-- redis 持久化(3)
一、redis 持久化–AOF 自动重写配置
1、AOF 自动重写方式–自动重写触发条件设置
auto-aof-rewrite-min-size size
auto-aof-rewrite-percentage percent
2、AOF 自动重写方式-- 自动重写触发比对参数( 运行指令info Persistence获取具体信息 )
aof_current_size
aof_base_size
3、AOF 自动重写方式-- 自动重写触发条件
4、redis 的 info 指令得到的信息如下:
127.0.0.1:6379> info
# Server
redis_version:4.0.0
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:6027d33076b6701c
redis_mode:standalone
os:Linux 5.15.153.1-microsoft-standard-WSL2 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:7.5.0
process_id:25017
run_id:f069c6a0793c8024918552d5fee22f7344b9f23f
tcp_port:6379
uptime_in_seconds:3812
uptime_in_days:0
hz:10
lru_clock:9838766
executable:/usr/local/redis/redis-4.0.0/redis-server
config_file:/usr/local/redis/redis-4.0.0/conf/redis-6379.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:830048
used_memory_human:810.59K
used_memory_rss:9703424
used_memory_rss_human:9.25M
used_memory_peak:830048
used_memory_peak_human:810.59K
used_memory_peak_perc:100.00%
used_memory_overhead:815822
used_memory_startup:766120
used_memory_dataset:14226
used_memory_dataset_perc:22.25%
total_system_memory:4047540224
total_system_memory_human:3.77G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:11.69
mem_allocator:jemalloc-4.0.3
active_defrag_running:0
lazyfree_pending_objects:0
# Persistence
loading:0
rdb_changes_since_last_save:1
rdb_bgsave_in_progress:0
rdb_last_save_time:1721112207
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:245760
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:217088
aof_current_size:70
aof_base_size:70
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0
# Stats
total_connections_received:1
total_commands_processed:13
instantaneous_ops_per_sec:0
total_net_input_bytes:356
total_net_output_bytes:16183
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:407
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
# Replication
role:master
connected_slaves:0
master_replid:3464cd4dbd3b0756293e99d19f01e8a78867d672
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:1.94
used_cpu_user:0.91
used_cpu_sys_children:0.09
used_cpu_user_children:0.02
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
127.0.0.1:6379>
二、redis 持久化–AOF 重写工作原理
1、AOF 工作流程
2、AOF 重写流程
三、redis 持久化–RDB 与 AOF 方案比对
1、RDB 与 AOF 区别(RDB VS AOF)
持久化方式 | RDB | AOF |
---|---|---|
占用存储空间 | 小(数据级:压缩) | 大(指令级:重写) |
存储速度 | 慢 | 快 |
恢复速度 | 快 | 慢 |
数据安全性 | 会丢失数据 | 依据策略决定 |
资源消耗 | 高/重量级 | 低/轻量级 |
启动优先级 | 低 | 高 |
2、RDB与AOF的选择之惑
1)对数据非常敏感,建议使用默认的AOF持久化方案。
- AOF 持久化策略使用 everysecond,每秒钟 fsync 一次。该策略 redis 仍可以保持很好的处理性能,当出
现问题时,最多丢失0-1秒内的数据。 - 注意:由于AOF文件存储体积较大,且恢复速度较慢。
2)数据呈现阶段有效性,建议使用RDB持久化方案。
- 数据可以良好的做到阶段内无丢失(该阶段是开发者或运维人员手工维护的),且恢复速度较快,阶段
点数据恢复通常采用RDB方案。 - 注意:利用RDB实现紧凑的数据持久化会使Redis降的很低,慎重总结:
3)综合比对
- RDB与AOF的选择实际上是在做一种权衡,每种都有利有弊。
- 如不能承受数分钟以内的数据丢失,对业务数据非常敏感,选用 AOF。
- 如能承受数分钟以内的数据丢失,且追求大数据集的恢复速度,选用 RDB。
- 灾难恢复选用 RDB。
- 双保险策略,同时开启 RDB 和 AOF,重启后,Redis 优先使用 AOF 来恢复数据,降低丢失数据的量。
四、redis 持久化–持久化应用场景分析
上一节关联链接请点击:
# Redis 入门到精通(五)-- redis 持久化(2)