一、单节点Redis的问题
(一)数据丢失
解决方案:实现Redis数据持久化
(二)并发能力问题
解决方案:搭建主从集群,实现读写分离
(三)存储能力问题
解决方案:搭建分片集群,利用插槽机制实现动态扩容
(四)故障恢复问题
解决方案:利用哨兵,实现健康检测和自动恢复
二、Redis持久化
(一)RDB
1、RDB是什么
RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。
redis停机时会执行一次RDB。
2、rdb配置
Redis内部有触发机制,可以在redis.conf文件中找到,格式如下:
#900秒内,如果至少有一个key被修改,则执行bgsave,如果是save “” 则表示禁用RDB
save 900 1
save 300 10
save 60 10000
# save: 设置快照的触发条件,格式为:save <seconds> <changes>
# 其中seconds表示指定时间间隔内的秒数,changes表示指定修改数量内的次数。
# 当满足其中一个条件时,Redis 就会进行快照。
stop-writes-on-bgsave-error yes # 在RDB执行时如果出现错误,是否停止写入。默认是yes。
rdbcompression yes # 是否压缩 RDB 文件。默认是yes。
rdbchecksum yes #是否对 RDB 文件进行校验和。默认是yes。
dbfilename dump_6379.rdb # 设置 RDB 文件名,默认是dump.rdb。
dir /var