Redis学习(五)之Redis配置文件和持久化

一、redis.conf详解

官网配置文件下载

单位

在这里插入图片描述
配置文件unit单位不区分大小写

包含 INCLUDES

在这里插入图片描述
可以包含其他配置文件,把多个conf文件组合成一个

网络 NETWORK

bind 127.0.0.1 #绑定ip
protected-mode yes #保护模式
port 6379 #端口设置

通用 GENERAL

daemonize no # 以守护进程(后台运行)的方式运行,默认是no,我们需要自己开启为yes
pidfile /var/run/redis_6379.pid # 如果以后台的方式运行,我们需要指定一个pid文件

#日志级别
# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably)
# warning (only very important / critical messages are logged)
loglevel notice
logfile "" #日志的文件位置名

databases 16 #数据库数量,默认16个

always-show-logo no #是否总是显示log

快照 SNAPSHOTTING

持久化,在规定的时间内,执行了多少次操作,则会持久化到文件.rdb .aof中
redis是内存数据库,如果没有持久化,那么数据断电及失。

#如果900s内,如果至少1个key进行了修改,我们即进行持久化操作
save 900 1
#如果300s内,如果至少10个key进行了修改,我们即进行持久化操作
save 300 10
#如果60s内,如果至少10000个key进行了修改,我们即进行持久化操作(高并发时)
save 60 10000

stop-writes-on-bgsave-error yes #持久化出错后是否继续工作,默认开启

rdbcompression yes #是否压缩rdb文件,需要消耗一些cpu资源

rdbchecksum yes #保存rdb文件时,进行错误的检查

dir ./ # rdb文件保存的目录

主从复制 REPLICATION

在这里插入图片描述

 replicaof <masterip> <masterport> 配置连接主机的ip和port
 masterauth <master-password> 配置连接的主机的密码

安全 SECURITY

可以在这里设置redis的密码,默认没有密码
在这里插入图片描述

客户端的限制 CLIENTS

maxclients 10000 # 设置能连接上redis的最大客户端的数量

内存 MEMORY MANAGEMENT

maxmemory <bytes> #redis配置最大的内存容量

maxmemory-policy noeviction # 内存到达上限之后的处理淘汰策略

8种淘汰策略
在这里插入图片描述

aof配置 APPEND ONLY MODE

appendonly no #默认不开启aof模式,默认使用rdb方式持久化,在大部分情况rdb完全够用
appendfilename "appendonly.aof" #持久化的文件的名字

# appendfsync always #每次修改都会同步,消耗性能
appendfsync everysec #每秒执行一次同步,但如果在这1s宕机可能会丢失这1s数据
# appendfsync no     #不执行同步,操作系统自己同步数据,速度最快

二、Redis持久化

Redis是内存数据库,如果不将内存的数据保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以Redis提供了持久化功能。

1、RDB

在指定的时间间隔内将内存中的数据快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存里。

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整合过程中,主进程是不进行任何IO操作。这就确保了极高的性能。如果需要进行大规模的数据恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加高效。RDB的缺点是最后一次持久化后的数据可能丢失,我们默认的就是RDB。

rdb保存的文件是dump.rdb,都是在快照中进行配置的

有时候在生产环境会将这个文件进行备份

在这里插入图片描述

触发机制

1、save的规则满足的情况下,会自动触发rdb规则
2、执行flushall命令,也会触发rdb规则
3、退出redis,也会产生一个rdb文件

如何恢复rdb文件

1、只需要将rdb文件放在redis启动目录就可以,redis启动时会自动检查dump.rdb恢复其中的数据
2、查看需要存放的位置


127.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/bin"

优点和缺点

优点:
1、适合大规模的数据恢复
2、如果对数据的完整性要求不高

缺点:
1、需要一定的时间间隔进程操作。如果redis意外宕机了,最后一次修改的数据就会丢失
2、fork进程的时候,会占用一定的内存空间。

2、AOF

是什么

AOF(Append Only File)
将所有命令都记录下来,history,恢复的时候把这个文件的记录全部执行一边

以日志的形式来记录每个写操作,将Redis执行过的所有指令记录下来(读不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件。换句话说,就是redis重启的话就根据日志文件将写指令从前到后执行一次以完成数据的恢复工作
AOF保存的是append

append

在这里插入图片描述

默认不开启,需要手动开启,将no改为yes就可以了,重启redis就会生效了

如果aof文件有错误,这时候redis是启动不起来的,我们需要修复这个aof文件
redis给我们提供了一个工具 redis-check-aof --fix

#用此命令修复
redis-check -aof --fix appendonly.aof

如果文件正常,重启就可以直接恢复了

重写规则

aof就是无限追加,文件会越来越大
在这里插入图片描述

如果aof文件大于64mb,fork一个新进程将文件进行重写

优点和缺点

appendonly no # 默认不开启aof模式
appendfilename "appendonly.aof" #持久化的文件名

# appendfsync always #每次修改都会sync。消耗性能
appendfsync everysec #每秒执行一次sync,可能会丢失1s的数据
# appendfsync no	 #不执行sync,这个时候操作系统自己同步数据,速度最快

#rewrite

优点:
1、每一次修改都同步,文件的完整性会更好
2、每秒同步一次,可能会丢失一秒的数据
3、从不同步时,效率最高

缺点:
1、相对于数据文件来说,aof远远大于rdb,修复的速度也比rdb慢
2、aof运行效率也要比rdb慢,所以redis默认是rdb持久化

三、下一篇

Redis学习(六)之redis主从复制、哨兵模式和缓存问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值