A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 没有bug 初级黑马   /  2019-9-19 14:47  /  869 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很 丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。
Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。
Redis最为常用的数据类型主要有以下五种:
        1:String
        2:Hash
        3:List
        4:Set
        5:Sorted set
持久化的两种方式:
RDB(Redis DataBase)
(一)在制定的时间内将内存中数据集快照写入磁盘,它恢复时是将快照文件直接读到内存里。
    RDB保存的是dump.rdb文件
                常用配置
                # 备份方案
                # save <seconds> <changes> 在seconds时间内有changes次改变则进行备份,默认为:
                        save 900 1   
                        save 300 10
                        save 60 10000
       
# 当后台保存时出错,则停止写入
stop-writes-on-bgsave-error yes
# 是否LZF的压缩算法备份
rdbcompression yes
# 在储存快照后,让reids使用CRC64算法进行数据校验
rdbchecksum yes
# 文件保存
dbfilename dump.rdb
# 工作目录
dir /data/redis/data
恢复
将备份文件(dump.rdb)移到到redis的工作目录下并启动服务即可
注意
指令save或者bgsave,即刻备份(save阻塞式备份,bgsave后台异步保存)
当执行flushall或者shutdown时,会新备份dump.rdb
dump.rdb有错误时,可用 redus-check-dump --fix dump.rdb 文件
优劣性
优势:适合大规模的数据恢复,对数据完整性和一致性的要求不高
劣势:在备份间隔内down掉,则会丢失最后一次快照后的所有修改;fork的时候,内存的数据被clone了一份,大致2倍的膨胀性需要考虑
AOF(Append Only File)
以日志的形式记录每一个写操作,只许追加不许修改。redis重启时根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

针对RDB方式的持久化,手动触发可以使用:
        1:同步持久化 save:会阻塞当前Redis服务器,直到持久化完成,线上应该禁止使用。
        2:异步持久化 bgsave:该触发方式会fork一个子进程,由子进程负责持久化过程,因此阻塞只会发生在fork子进程的时候。
        而自动触发的场景主要是有以下几点:
        根据我们的 save m n 配置规则自动触发;
        从节点全量复制时,主节点发送rdb文件给从节点完成复制操作,主节点会触发 bgsave;
        执行 debug reload 时;
        执行 shutdown时,如果没有开启aof,也会触发。

常用配置
# AOF的开关
appendonly no
# 文件名
appendfilename "appendonly.aof"
# 备份策略
# always每一次数据变化的操作都记录并保存到磁盘中
# everysec每秒钟追加,并保存到磁盘中
# NO是保存到文件,但不同步到磁盘中,默认是everysec
# appendfsync always
appendfsync everysec
# appendfsync no
# 重写时是否可以运用appendfsync ,默认是no,保证数据安全性
no-appendfsync-on-rewrite no
# redis会记录上次重写时的aof的大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发,即100和64mb
# 设置重写的基准比例
auto-aof-rewrite-percentage 100
# 设置重写的基准值
auto-aof-rewrite-min-size 64mb
# Redis启动加载aof文件,如果发现末尾命令不完整则自动截掉,成功加载前面正确的数据。
aof-load-truncated yes
恢复
将appendonly.aof文件移到redis的工作目录下并启动服务即可
注意
如果RDB和AOF都开启,启动服务器时优先选择appendonly.aof,此时如果appendonly.aof文件有错误,服务器不能启动,这时可以使用redis-check-aof --fix appendonly.aof 修复后再启动。
优劣
优势:数据完整性更好
劣势:aof文件要比rdb文件大,并且恢复速度要慢;aof运行效率要比rdb慢

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马