redis配置文件:redis.conf
配置项及说明
1、Redis登录连接
-
bind
绑定的主机地址,只有bind指定的IP,才能用redis-cli登录该redis服务器并进行操作。
如果没有绑定本机IP,即使本机使用0.0.0.0也是不能访问的。
如果要想允许本机访问,那么可以写成:bind 本机IP
如果写为①bind 0.0.0.0;②bind *;③把bind注释掉,那么就相当于对所有IP开放了登录权限。
如果要bind多个IP,应该写为:
1 2 3 4 5 | bind IP1 IP2 // 错误写法,此时最下边bind IP的会覆盖其他的IP bind IP1 bind IP2 |
-
protected-mode
是否允许远程访问,yes-不允许,no-允许
bind和protected-mode共同控制了是否可以远程访问:
- bind控制了允许使用哪个IP登录本主机(redis-cli -h选项);
- protected-mode控制了是否可以远程访问,只有当为no时才能从另一台主机上访问本机redis
-
port
监听的端口,默认6379。
在一些哨兵模式或者集群模式下可以变化。
port项也指定了通过redis-cli登录时,-p项的端口。
-
requirepass
设置Redis连接/登录密码。默认关闭。
如果配置了该项,那么在通过redis-cli -h登录时,还要加入-a或AUTH选项来指定密码。
此外,如果该节点是配置了主从复制的m节点,那么所有的s节点还要配置masterauth项。
-
timeout
多久(秒)未操作后关闭连接,如果设为0则表示关闭该功能。
-
daemonize
是否设置为守护进程。yes-是,no-否
守护进程:运行在后台的特殊进程,独立于控制终端,不用用户输入就能持续运行。
-
pidfile
当daemonize=yes时,redis服务将作为守护进程在后台运行,此时可以在pidfile中找到其pid号
-
loglevel
日志级别。默认为 notice
-
databases
管理的数据库数量。默认0。
可以通过客户端工具看得到。
-
maxclients
用途
- 同一时间最大客户端连接数,默认为0,无限制。
说明
- Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。
- 可以在info clients中查看当前Redis的连接数。
- 可以通过config set maxclients来对最大连接数进行动态设置。
2、内存
-
maxmemory
redis最大内存限制(byte)。
Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区。
3、持久化
-
rdbcompression
全局复制时,是否对数据进行压缩。默认yes。
Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。
-
dbfilename
RDB模式下存放数据的rdb文件,默认dump.rdb
-
dir
redis工作目录,存放rbg文件、日志文件
-
appendonly
是否开启AOF
-
appendfilename
AOF文件的存放位置
-
appendfsync
AOF缓冲区同步文件策略,不同取值代表不同的策略:
always:命令写入aof_buf后,调用系统fsync操作同步到AOF文件,fsync完成后线程返回;
everysec:命令写入aof_buf后,调用系统write操作,witer完成后线程返回。fsync同步文件操作由专门线程每秒调用一次;
no:命令写入aof_buf后,调用系统write操作,不对AOF文件做fsync同步,同步硬盘操作由操作系统负责,通常同步周期最长30s。
-
auto-aof-rewrite-min-size
AOF重写时文件最小体积,默认64MB
-
auto-aof-rewrite-percentage
当前AOF空间(aof_current_size)与上一次重写后的AOF文件空间(aof_base_size)的比值。
AOF自动触发时机=aof_current_size>auto-aof-rewrite-minsize&&(aof_current_size-aof_base_size)/aof_base_size>=auto-aof-rewritepercentage
其中aof_current_size和aof_base_size可以在info Persistence统计信息中查看。
-
aof-rewrite-incremental-fsync
用途:AOF时,单次批量写入硬盘的数据量
-
no-appendfsync-on-rewrite
用途:AOF重写时,是否做fsync操作
默认:no
说明:当为yes时,极端情况下可能丢失整个AOF重写期间的数据
4、客户端
用途:输出缓冲区的容量。
每个C端都有一个输出缓冲区,其作用是保存命令的执行结果并返回给C端。
用法:client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
各项
项 |
说明 |
class |
客户端类型: normal:普通C端 slave:slave C端,用于复制 pubsub:发布订阅客户端 |
hard limit | 如果buffer大于hard limit,C端会立刻关闭 |
soft limit soft seconds |
如果C端使用的obuf超过了soft limit并且持续了soft second秒,C端会立刻关闭 |
默认:client-output-buffer-limit slave 256MB 64MB 60
含义是,60s内buffer的使用量超过了64MB或者直接超过了256MB,m将取消主从复制,造成全量同步/主从复制失败
5、主从复制
-
replicaof
用法:replicaof {masterHost} {masterPort}
用途:指定该Redis所属的master,此后该节点成为slave
-
requirepass
用途:
- 设置节点密码,设置完毕后该节点的登录(所有该节点bind的IP:PORT)需要用-a或auth密码登录;
- 此外,m如果设置了requirepass,s还需要配置masterauth,二者相同。
-
masterauth
用途:m如果设置了requirepass,s还需要配置masterauth,二者相同。
-
replica-read-only
用途:设置s是否为只读
该项尽量不要修改,因为主从复制是从m到s,对s的任何修改是无法被m感知到的,从而造成主从不一致的问题。
-
repl-disable-tcp-nodelay
用途:用于控制是否关闭TCP_NODELAY
选项
- 关闭(默认),m产生的命令无论大小都会及时发给s,这样主从延迟会变小,但是增加了网络带宽消耗。适用于主从网络环境良好的场景,如同机架、同机房部署。低延迟
- 开启,m会合并较小的TCP数据包从而节省带宽。默认的发送时间间隔取决于Linux内核,一般默认40ms。这种配置节省了带宽,但是增大了主从间的延迟。适用于网络环境复制或带宽紧张的场景,如跨机房部署。高容灾性
-
repl-timeout
用途:主从复制的超时时间
说明:
当m向s复制的RDB太大,复制的时间超过了该项所设置的值,此时s会放弃接收并清理已接收的临时文件,主从复制失败。
默认值:60;
之所以设置为60,是指在千兆网卡下,网卡带宽理论峰值为100MB/s,此时传完6GB的RDB文件至少需要60s。这种情况下传输>6GB的RDB文件就很容易出现同步超时。
-
repl-diskless-sync
用途:无盘复制
说明:
为了降低m的磁盘开销,Redis支持无盘复制——m上生成的RDB不保存在本地,而是直接通过网络发送到s。
-
replica-serve-stale-data
用途:是否关闭s节点的读功能
说明:
默认开启,此时s会响应所有命令。对于无法容忍不一致的场景可以设置为no,此时s除了info和replicaof命令之外的所有命令都只返回"SYNC with master in progress"(也就是说此时没法读了,这个s只是作为m的备份存在)。
-
repl-ping-replica-period
用途:主从之间ping命令发送的时间间隔(s)
说明:ping命令用于m和s互相检测对方的存活性和连通情况。
-
min-replicas-to-write与min-replicas-max-lag
用途:指定开启主从复制情况下,最小s的数量、最大的延迟性
说明:
当s数量少于min-replicas-to-write或者延迟超过min-replicas-max-log时,m将不会向s写入
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
2022-08-31 MySQL远程连接失败(错误码:2003)