redis配置文件笔记

最近对redis使用较为频繁,各项配置已经不太熟练,结合各位大佬分享的配置,整理一篇笔记,方便查询 。
1.基础参数配置
# 是否在后台执行,yes:后台运行;no:不是后台运行(老版本默认)daemonize yes # 是否开启保护模式(默认开启)# 要是配置里没有指定bind和密码 。开启该参数后,redis只会本地进行访问,拒绝外部访问 。要是开启了密码 和bind,可以开启 。否 则最好关闭,设置为no 。protected-mode yes# redis的进程文件pidfile /var/run/redis/redis-server.pid# redis监听的端口号port 6379# 此参数确定了TCP连接中已完成队列的长度(默认511)tcp-backlog 511 # 指定redis只接收指定IP地址的请求# 如需处理所有请求(远程访问) bind 0.0.0.0bind 127.0.0.1 # 配置unix socket来让redis支持监听本地连接 。unixsocket /var/run/redis/redis.sock# 配置unix socket使用文件的权限unixsocketperm 700 # 此参数为设置客户端空闲超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,不能小于0 。timeout 0 # tcp keepalive参数 。如果设置不为0,就使用配置tcp的SO_KEEPALIVE值,使用keepalive有两个好处:检测挂掉的对端 。降低中间设备出问题而导致网络看似连接却已经与对端端口的问题 。在linux内核中,设置了keepalive,redis会定时给对端发送ack 。检测到对端关闭需要两倍的设置值 。tcp-keepalive 0 # 指定了服务端日志的级别# debug(适合开发、测试环境)# verbose(较少于debug级别 适合开发、测试环境)# notice(适合生产环境)# warn(只有非常重要的信息)loglevel notice # 指定了记录日志的文件 。空字符串的话,日志会打印到标准输出设备 。后台运行的redis标准输出是/dev/null 。logfile /var/log/redis/redis-server.log # 是否打开记录syslog功能# syslog-enabled no # syslog的标识符# syslog-ident redis # 日志的来源、设备# syslog-facility local0 # 数据库的数量(默认16)databases 162.持久化配置
# 注释掉"save"这一行配置项就可以让保存数据库功能失效# 设置redis进行数据库镜像的频率 。# 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化) # 300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化) # 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)save 900 1save 300 10save 60 10000# 当rdb持久化出现错误后,是否依然进行继续进行工作,# yes:不能进行工作,# no:可以继续进行工作,# 可以通过info中的rdb_last_bgsave_status了解RDB持久化是否有错误stop-writes-on-bgsave-error yes# 使用压缩rdb文件# yes:压缩,但是需要一些cpu的消耗# no:不压缩,需要更多的磁盘空间rdbcompression yes# 是否校验rdb文件rdbchecksum yes# rdb文件的名称dbfilename dump.rdb# 数据目录,数据库的写入会在这个目录 。rdb、aof文件也会写在这个目录dir /var/lib/redis# 默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了 。但是redis如果中途宕机,会导致可能有几分钟的数据丢失,根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性 。Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件 。appendonly no # aof文件名appendfilename "appendonly.aof" # aof持久化策略的配置# no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快 。# always表示每次写入都执行fsync,以保证数据同步到磁盘 。# everysec表示每秒执行一次fsync,可能会导致丢失这1s数据 。appendfsync everysec # 在aof重写或者写入rdb文件的时候,会执行大量IO,此时对于everysec和always的aof模式来说,执行fsync会造成阻塞过长时间,no-appendfsync-on-rewrite字段设置为默认设置为no 。如果对延迟要求很高的应用,这个字段可以设置为yes,否则还是设置为no,这样对持久化特性来说这是更安全的选择 。设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes 。Linux的默认fsync策略是30秒 。可能丢失30秒数据 。no-appendfsync-on-rewrite no # aof自动重写配置 。当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候Redis能够调用bgrewriteaof对日志文件进行重写 。当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程 。auto-aof-rewrite-percentage 100# 设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写auto-aof-rewrite-min-size 64mb # aof文件可能在尾部是不完整的,当redis启动的时候,aof文件的数据被载入内存 。重启可能发生在redis所在的主机操作系统宕机后,尤其在ext4文件系统没有加上data=https://www.isolves.com/it/sjk/Redis/2019-10-23/ordered选项(redis宕机或者异常终止不会造成尾部不完整现象 。)出现这种现象,可以选择让redis退出,或者导入尽可能多的数据 。如果选择的是yes,当截断的aof文件被导入的时候,会自动发布一个log给客户端然后load 。如果是no,用户必须手动redis-check-aof修复AOF文件才可以 。aof-load-truncated yes


推荐阅读