redis.conf
单位
导入
model
通过这里的 loadmodule 配置将引入自定义模块来新增一些功能。
网络
- bind : 绑定ip地址,只有绑定的ip可以访问 如果注释掉就是所有ip都可访问
- port: 指定redis运行的端口,默认是6379。我们使用集群的时候就需要修改端口号
- protect-model 保护模式 ,Redis3.2版本提出。如果Redis在启动时,未开启bind和密码设置功能,只能通过回环地址本地访问,如果尝试远程访问redis,会报DENIED Redis is running protected mode because protected mode is enabled
- timeout:设置客户端连接时的超时时间
- tcp-keepalive :单位是秒,周期性检查客户端是否健康,避免阻塞
通用GENERAL
-
daemonize 默认no,是否以守护进程方式运行
-
pidfile: 配置PID文件路径,如果以守护线程运行,则需要一个pid文件
-
loglevel :定义日志级别。
-
logfile :配置log文件地址,默认notice
debug(记录大量日志信息,适用于开发、测试阶段) verbose(较多日志信息,但不像debug那么混乱) notice(适量日志信息,使用于生产环境) warning(仅有部分重要、关键信息才会被记录) 复制代码
-
databases:设置数据库的数目。 默认16个,以db0开始
-
always-show-logo 是否显示logo
-
set-proc-title 修改进程标题以显示一些运行时信息
-
proc-title-template 当更改进程标题时,Redis使用以下模板来构造修改后的标题。
{title}父进程执行的进程的名称,或子进程的类型。 {listen addr}绑定地址或'*',后跟TCP或TLS端口侦听,或如果只有Unix套接字可用。 {服务器模式}特殊模式,即“[sentinel]”或“[cluster]”。 #{port}TCP端口侦听,或0。 #{tls port}tls port侦听,或0。 #{unixsocket}正在侦听的Unix域套接字,或“”。 #{config file}使用的配置文件的名称。 进程标题模板{title}{listen addr}{server mode} 复制代码
SNAPSHOTTING 快照
- save 配置触发 Redis的持久化条件,规定什么时候保存到硬盘(rdb,aof)
# save 3600 1 3600秒(一小时)后,如果至少有一把钥匙发生了变化,就进行持久化操作
# save 300 100 300秒(5分钟)后,如果至少更改了100个键
# save 60 10000 60秒后,如果至少10000个键发生更改
复制代码
为什么持久化? redis是内存数据库,断电即失
- stop-writes-on-bgsave-error 持久化失败后是否停止写入,为yes则后续写操作均会失败
- rdbcompression 是否用LZF算法进行压缩快照(把整个内存数据映射到硬盘中)
- rdbchecksum 在存储快照后,是否使用CRC64算法来进行数据校验,但会增加大约10%的性能消耗
-dir 默认./ rdb工作目录,数据将保存在这个目录下
REPLICATION 复制
-
slave-serve-stale-data:默认值为yes。当一个 slave 与 master 失去联系,或者复制正在进行的时候,slave 可能会有两种表现:
1) 如果为 yes ,slave 仍然会应答客户端请求. 但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候 2) 如果为 no ,在你执行除了 info he salveof 之外的其他命令时 slave 都将返回一个 "SYNC with master in progress" 的错误 复制代码
-
slave-read-only:配置Redis的Slave实例是否接受写操作,即Slave是否为只读Redis。默认值为yes。
-
repl-diskless-sync:主从数据复制是否使用无硬盘复制功能。默认值为no。
-
repl-diskless-sync-delay:当启用无硬盘备份,服务器等待一段时间后才会通过套接字向从站传送RDB文件,这个等待时间是可配置的。
这一点很重要,因为一旦传送开始,就不可能再为一个新到达的从站服务。 从站则要排队等待下一次RDB传送。因此服务器等待一段 时间以期更多的从站到达。 延迟时间以秒为单位,默认为5秒。 要关掉这一功能,只需将它设置为0秒,传送会立即启动。 复制代码
-
repl-disable-tcp-nodelay:同步之后是否禁用从站上的TCP_NODELAY 如果你选择yes,redis会使用较少量的TCP包和带宽向从站发送数据。但这会导致在从站增加一点数据的延时。
Linux内核默认配置情况下最多40毫秒的延时。 如果选择no,从站的数据延时不会那么多,但备份需要的带宽相对较多。 默认情况下我们将潜在因素优化,但在高负载情况下或者在主从站都跳的情况下,把它切换为yes是个好主意。 默认值为no。 复制代码
SECURITY 安全
- requirepass redis密码
127.0.0.1:6379> config get requirepass # 默认无密码
1) "requirepass"
2) ""
127.0.0.1:6379> config set requirepass 123456
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "123456"
line@line-PC:/usr/local/bin$ redis-cli # 更改后需重登才生效
127.0.0.1:6379> set k1 v2
(error) NOAUTH Authentication required. #未登录无权限
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set k1 v2
OK
127.0.0.1:6379>
复制代码
CLIENTS 连接限制
- maxclients :设置客户端最大并发连接数,默认无限制 le: maxclients 10000
MEMORY MANAGEMENT 内存
-
maxmemory 设置Redis的最大内存
-
maxmemory-policy :当内存使用达到maxmemory设置的最大值时,redis使用的内存清除策略。
1、volatile-lru:只对设置了过期时间的key进行LRU(默认值) 从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰 2、allkeys-lru : 删除lru算法的key 3、volatile-random:随机删除即将过期key 从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰 4、allkeys-random:随机删除 5、volatile-ttl : 删除即将过期的 从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰 6、noeviction : 永不过期,返回错误 复制代码
APPEND ONLY MODE aof配置
-
appendonly no 默认不开启,即默认使用rdb。AOF和RDB可以同时启用而不会出现问题。如果启动时启用了AOF,Redis将加载AOF
-
appendfilename “appendonly.aof” 持久化文件的名称
-
appendfsync everysec 什么 时候进行同步 If unsure, use “everysec”.
# appendfsync always # 每次修改执行 appendfsync everysec # 每秒一次,可能丢失这一秒的数据 # appendfsync no # 不执行,操作系统自己同步速度最快 复制代码