Day158.Redis.conf、Redis持久化 -Redis
发布日期:2021-05-07 01:39:45 浏览次数:26 分类:精选文章

本文共 3713 字,大约阅读时间需要 12 分钟。

一、Redis.conf详解

启动的时候,就通过配置文件来启动的

1、单位

  • 配置文件,大小写不区分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vAaNFTtt-1610196938933)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210109170318542.png)]

2、包含【INCLUDES】

  • 可包含别的配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y7fCpO1w-1610196938936)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210109171305281.png)]

3、网络【NETWORK】

bind 0.0.0.0  # 绑定的ipprotected-mode no # 是否受保护,保护模式port 6379 # 端口设置

4、通用【GENERAL】

daemonize yes # 以守护进程的方式运行,默认是 no ,需手动开启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 noticelogfile ""  # 日志的文件位置名databases 16 # 数据库的数量,默认为16个数据库always-show-logo yes # 是否总是显示LOGO,默认 显示

5、快照【SNAPSHOTTING】

持久化,在规定的视角内,执行了多少次操作,则会持久化到文件 .rdb.aof

redis 是内存数据库,如果没有持久化,那么数据断电及失

save 900 1 # 900秒后,如果至少一个1个 key进行了修改,就进行持久化操作save 300 10 # 300秒后,如果至少一个10个 key进行了修改,就进行持久化操作save 60 10000 # 60秒后,如果至少一个10000个 key进行了修改,就进行持久化操作stop-writes-on-bgsave-error yes # 持久化失败,是否还要继续写入,默认为yesrdbcompression yes # 是否压缩 rdb 文件,需要消耗CPU资源rdbchecksum yes # 保存rdb文件时,进行错误校验dir ./ # rdb 文件保存的目录,默认为当前文件夹

6、复制【REPLICATION】

在后面复制讲解

7、安全【SECURITY】

可以设置redis密码,默认没有密码

127.0.0.1:6379> pingPONG127.0.0.1:6379> config get requirepass # 获取redis的密码1) "requirepass"2) ""127.0.0.1:6379> config set requirepass "123456" # 设置redis密码OK127.0.0.1:6379> ping # 发现所有命令都没权限(error) NOAUTH Authentication required.127.0.0.1:6379> auth 123456 # 使用密码进行登录OK127.0.0.1:6379> config get requirepass1) "requirepass"2) "123456"

8、客户端【CLIENTS】

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

9、内存【MEMORY MANAGEMENT】【面试问】

maxmemory 
# redis 配置最大的内存容量maxmemory-policy noeviction # 内容达到上限后的处理策略 【redis的内存淘汰策略】 1、volatile-lru:只对设置了过期时间的key进行LRU(默认值) 2、allkeys-lru : 删除lru算法的key 3、volatile-random:随机删除即将过期key 4、allkeys-random:随机删除 5、volatile-ttl : 删除即将过期的 6、noeviction : 永不过期,返回错误

10、AOF配置【APPEND ONLY MODE】

appendonly no # 默认是不开启aof模式,默认使用 rdb 方式持久化,在大部分所有的情况下,rdb 完全够用appendfilename "appendonly.aof" # 持久化的文件名字# appendfsync always # 每次修改都会 sync。消耗性能appendfsync everysec # 每秒执行一次 sync,可能会丢失1s的数据# appendfsync no # 不执行 sync,这时操作系统自己同步数据,速度最快

具体配置,在redis持久化中详解

.

二、Redis持久化

面试和工作,持久化都是重点

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

RDB(Redis DataBase)

1、什么是RDB

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J9Na99AN-1610196938938)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210109194526413.png)]

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

默认情况下就是RDB,一般情况下不需要修改

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

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

rbd保存的文件是 dump.rdb

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4z40qSdM-1610196938941)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210109185440533.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XpkLkZef-1610196938945)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210109185948973.png)]

2、触发机制【产生RDB文件】

  • save的规则满足的情况下,会自动触发RDB规则
  • 执行flushdb命令,也会触发RDB规则
  • 退出Redis,也会触发RDB规则

备份就自动生成一个dump.rdb

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eLhcniJR-1610196938947)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210109191418050.png)]

3、如何恢复rdb文件

  • 只需要将rdb文件放在我们redis启动目录下,redis启动的时候会自动检查dump.rdb文件恢复启动的数据
  • 查看需要存放的位置
127.0.0.1:6379> config get dir1) "dir"2) "/www/server/redis" # 如果在这个目录下存在 dump.rdb 文件,启动时就会自动恢复其中的数据

4、RDB的优缺点

优点

  • 适合大规模的数据恢复
  • 对数据完整性要求不高

缺点

  • 需要一定的时间间隔进行操作,如果redis意外宕机了,最后一次修改的数据就没了
  • fork进程的时候,会占用一定的内存空间

.

AOF(Append Only File)

将我们的所有命令都记录下来,history,恢复的时候就把这个文件全部再执行一遍

1、什么是AOF

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EsDarnC6-1610196938949)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210109195207402.png)]

以日志的形式来记录每一个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志的内容将写指令重新执行一次以完成数据的恢复工作

Aof保存的文件是 appendonly.aof

2、如何打开AOF功能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r5aejncJ-1610196938950)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210109200034836.png)]

默认是不开启的,需要手动进行配置

appendonly yes # 开启aof

再重启,redis 就生效了

3、.aof文件出错后修复

如果aof文件有错误,这时redis是启动不起来的,我们需要修复这个aof文件

redis 给我们提供了一个工具redis-check-aof调用

redis-check-aof --fix appendonly.aof

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3TVGXkhC-1610196938952)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210109201735300.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8X46mRAy-1610196938953)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210109201845008.png)]

4、重写规则说明

aof默认就是文件的无限追加,文件会越来越大

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iNHKUbep-1610196938954)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20210109202740254.png)]

如果aof文件大于64mb,这时会fork一个新的线程来将文件进行重写

5、AOF的优缺点

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

优点

  • 每一次修改都同步,文件完整性就更好
  • 默认每秒同步一次,可能会丢失一秒的数据
  • 从不同步,效率最高

缺点

  • 相对于数据文件来说,aof远远大于rdb,修复的速度也比rdb慢
  • Aof运行效率也比Rdb慢,因此redis默认配置是rdb持久化

感谢狂神

上一篇:Day159.Redis发布订阅、Redis主从复制(手动版) -Redis
下一篇:Day158.Jedis、SpringBoot整合 -Redis

发表评论

最新留言

不错!
[***.144.177.141]2025年04月14日 15时50分39秒