[学习笔记] Redis数据库之Redis配置与持久化

# 学习 # · 2021-10-18

Redis.conf配置文件详解

1、单位配置:

1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 1024*1024 bytes
1g => 1000000000 bytes
1gb => 1024*1024*1024 bytes

2、引用/包含其他配置文件:

include .\path\to\local.conf
include c:\path\to\other.conf

3、网络配置:

# 绑定IP
bind 127.0.0.1

# 保护模式
protected-mode yes

# 绑定端口
port 6379

4、通用配置:

# 以守护进程的方式允许
daemonize yes

# 以后台的方式运行,需要指定一个pid文件
pidfile /var/run/redis_6379.pid

# 日志配置
loglevel notice

# 日志的文件位置名
logfile ""

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

# 是否总是显示LOGO
always-show-logo yes

5、快照持久化配置:

# 如果900s内至少1个key修改,及进行持久化操作
save 900 1

# 如果300s内至少10个key修改,及进行持久化操作

save 300 10

# 如果60s内至少10000个key修改,及进行持久化操作
save 60 10000

# 持久化如果出错,是否还需要继续工作!
stop-writes-on-bgsave-error yes

# 是否压缩rdb文件
rdbcompression yes

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

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

6、日志持久化配置:

# 开启AOF模式
appendonly no

# 持久化的文件的名字
appendfilename "appendonly.aof"

# 每次修改都会sync,消耗性能
# appendfsync always

# 每秒执行一次sync,可能会丢失这1s的数据
appendfsync everysec


# 不执行sync,这个时候操作系统自己同步数据,速度最快
# appendfsync no

7、设置Redis密码:

# 获取Redis密码
config get requirepass

# 设置Redis密码
config set requirepass "123456"

# 使用密码进行登录
auth 123456

8、限制客户端:

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

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

# 内存到达上限之后的处理策略
# volatile-lru:只对设置了过期时间的key进行LRU(默认值)
# allkeys-lru : 删除LRU算法的key
# volatile-random:随机删除即将过期key
# allkeys-random:随机删除
# volatile-ttl : 删除即将过期的
# noeviction : 永不过期,返回错误
maxmemory-policy noeviction

Redis持久化之RDB

1、Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。

2、RDB(Redis DataBase):快照持久化机制。

3、RDB持久化机制:

  • a、redis根据配置尝试去生成rdb快照文件。
  • b、fork一个子进程出来。
  • c、子进程尝试将数据dump到临时的rdb快照文件中。
  • d、完成rdb快照文件的生成之后,就替换之前的旧的快照文件。

4、RDB持久化的触发方式:

  • a、配置文件中save的规则满足的情况下,会自动触发rdb规则。
  • b、客户端执行flushall命令,会触发rdb规则。
  • c、退出redis时,会产生rdb文件。

5、RDB的恢复:将rdb文件放在redis启动目录即可。如果在这个目录下存在dump.rdb文件,启动就会自动恢复其中的数据。

# 查看存放目录
config get dir

6、RDB的优点:

  • a、适合大规模的数据恢复。
  • b、适合做冷备:RDB可以做冷备,生成多个文件,每个文件都代表了某一个时刻的完整的数据快照。
  • c、RDB对redis对外提供的读写服务,影响小,可让redis保持高性能,因为redis主进程只需要fork一个子进程,让子进程执行磁盘IO操作来进行RDB持久化即可。

7、RDB的缺点:

  • a、丢失数据多:需要一定的时间间隔进程操作。
  • b、fork进程的时候,会占用一定的内容空间。如果数据文件特别大,可能导致对客户端提供的服务暂停一定时间。

Redis持久化之AOF

1、AOF(Append Only File):日志持久化机制。

2、AOF持久化机制:以日志的形式来记录每个写操作(读操作不记录),将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

  • a、开启:默认AOF没有开启,修改配置文件开启AOF。
  • b、修复(文件破损):使用redis-check-aof –fix 进行修复。
  • c、恢复:重启redis然后重新加载。

3、Rewrite重写机制:

  • a、AOF采用文件追加方式,文件会越来越大。
  • b、AOF文件持续增长而过大时,会fork出一条新进程来将文件重写。
  • c、Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。
  • auto-aof-rewrite-percentage 100

4、AOF的优点:

- a、每一次修改都同步,文件的完整会更加好。

- b、数据丢失少:AOF可更好的保护数据不丢失。

- c、从不同步,效率最高。

5、AOF的缺点:

- a、AOF日志文件通常比RDB数据快照文件更大。

- b、AOF数据恢复的时候,会比较慢。

-----

##### Redis持久化总结

1、RDB和AOF的选择:

| 命令       | RDB    | AOF          |
| ---------- | ------ | ------------ |
| 启动优先级 | 低     | 高           |
| 体积       | 小     | 大           |
| 恢复速度   | 快     | 慢           |
| 数据安全性 | 丢数据 | 根据策略决定 |
| 轻量       | 重     | 轻           |

2、只做缓存:只希望数据在服务器运行的时候存在,也可以不使用任何持久化方式。

3、同时开启两种持久化方式:

- a、在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。
如无特殊说明,本博所有文章均为博主原创。

如若转载,请注明出处:一木林多 - https://www.l5v.cn/archives/318/

评论