
Redis.conf
单位
1 | # 1k => 1000 bytes |
在单位上,大小写不敏感。
include
1 | # include /path/to/local.conf |
可以包含别的配置文件。
网络
1 | bind 127.0.0.1 ::1 #绑定的IP地址 |
General
1 | daemonize yes #以守护进程方式运行 |
SNAPSHOTTING 快照
持久化,在规定的时间内,执行了多少次操作,则会进行一次持久化。
Redis是内存数据库,没有持久化,数据断电即失。
1 | save 900 1 #每隔900秒尝试进行保存,若修改次数>=1则进行一次快照保存 |
1 | stop-writes-on-bgsave-error yes #持久化出错,是否继续工作 |
REPLICATION复制
…
SECURITY安全
1 | requirepass 123456 # 设置密码,默认没有密码 |
CLIENTS客户端
1 | maxclients 1000 #设置redis最大客户端数量 |
APPEND ONLY MODE 模式 aof
1 | appendonly no #默认不开启aof模式, |
Redis持久化
参考文献:https://www.cnblogs.com/xing1/p/16380120.html
Redis是内存数据库,若不将内存中数据库状态保存到磁盘,一旦服务器进程退出,服务器中数据库状态就会消失,所以Redis提供了持久化功能。
RDB(Redis Database)
指定时间间隔内将内存中数据快照写入磁盘。
Redis单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程结束了,再用这个临时文件替换上次持久化好的文件。
主进程不进行任何IO操作,确保了极高的性能。
如果要大规模进行数据恢复,且对于数据恢复的完整性不是非常敏感,那RDB的方式要比AOF方式更加高效。RDB缺点是最后一次持久化后数据可能丢失。
默认情况下使用RDB。
默认保存文件为:dump.rdb
1 | dbfilename: dump.rdb |
触发条件
- save规则满足
- 执行flushall
- 关闭redis服务器
rdb文件恢复
将rdb文件放到Redis启动目录就可,redis启动会检查rdb文件然后恢复。
- /user/local/bin
优点
适合大规模数据恢复
对数据完成性要求不高
缺点:
- 需要一定的时间间隔进程操作。若redis意外宕机了,最后一次修改数据就没有了
- fork进程的时候,会占用一定的内存空间。
有时候在生产环境我们会对这个文件进行备份。
AOF(Append Only File)
介绍
将所有命令都记录下来,恢复的时候就把这个文件再全部执行一遍;
以日志的形式记录每个写操作,将Redis执行过的所有指令记录下来(不记录读操作),只可追加文件不可改写文件,Redis启动之初会读取该文件重新构建数据,Redis重启的话就根据日志文件的内容将所有指令执行一次以完成数据恢复操作。
AOF重写
AOF追加文件会越来越大,这样不合理;
为了解决这个问题,当文件大到一定程度,会触发AOF重写;
AOF重写会将内存中的数据库用命令的方式重写一个aof文件,来为AOF文件减肥。
- 当AOF文件体积变得过大时,会fork出一条新进程来将文件重写(先写临时文件,然后rename),遍历新进程的内存数据,每条记录有一条set语句。重写aof文件操作,没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写一个新的aof文件(与快照类似)。
- 在子进程重写期间,服务端正常对外服务,服务端会将在重写期间收到的数据缓存到aof_rewrite_buf中,也就是单独开辟一块缓存来存储重写期间收到的命令,在子进程重写完成后,再把缓存的数据追加到新的aof文件中。
- 重写期间写出的aof文件是一个临时文件,不是旧文件,在重写结束后会删除旧的aof文件,然后临时文件会rename,成为当前使用的aof文件。
配置文件
AOF默认文件:appendonly.aof
AOF默认不开启,需要手动开启
1 | appendonly no #no表示关闭 yes表示开启 |
AOF文件修复
当aof文件有错误,Redis则无法启动,就需要修复这个aof文件;
redis提供了一个工具redis-check-aof
1 | redis-check-aof --fix appendonly.aof |
redis-check-aof
修复会删除错误的指令,将错误的数据删除。
优点
- 每次修改都同步,文件完整性更高
缺点
- 数据文件大,
- 修复速度慢
- AOF运行效率比rdb低