美文网首页
Redis:redis.conf配置文件介绍

Redis:redis.conf配置文件介绍

作者: Anbang713 | 来源:发表于2020-06-07 09:40 被阅读0次

    《Redis:简介与安装》中我们介绍了如何在Linux服务器上安装Redis,其中在Redis的解压目录下有个很重要的配置文件redis.conf不知道大家是否还有印象。

    在实际使用Redis的过程中,很多功能的配置都是在此文件中完成的。我们今天的重点就是说说这个配置文件里都有些什么。

    1. 开头说明

    开头部分主要描述了这个文件是干嘛的,以及Redis必须通过向redis-server传入该配置文件的路径才能启动。比如:./redis-server /path/to/redis.conf。紧接着还给出提示若我们需要使用内存大小时,可以指定单位,通常是以k、gb、m的形式出现,并且这些单位是不区分大小写的。

    2. INCLUDES

    我们知道Redis只有一个配置文件,但如果是多个人进行开发维护,那么就需要多个这样的配置文件。Redis针对这种场景,提供了include关键字将其他配置文件引入进来,比如:include /path/to/local.conf

    需要注意的是:如果将include写在redis.conf文件的最开始,那么后面的配置会覆盖引入文件的配置,即redis.conf的配置优先级是更高的。但如果想以引入文件的配置作为最终生效的配置,那么需要将include配置写在redis.conf文件的末尾。

    3. MODULES

    模块扩展功能是在redis4.0上新增出来的,我们通过这里的loadmodule配置引入自定义模块来新增一些功能。比如新增一种数据类型。

    4. NETWORK

    注意:该段配置较长,截图只是部分内容,完整内容参考redis.conf

    (1)bind:用于绑定redis服务器网卡IP,默认为127.0.0.1,只能通过本机的客户端连接redis服务,而无法通过远程连接。如果允许远程连接,则可以将该配置项设置为空。

    (2)port:设置redis进程的端口号,默认是6379。

    (3)timeout:设置客户端连接的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接。默认值为0,表示不关闭。

    (4)tcp-keepalive:周期性的检查客户端是否处于健康状态,避免服务器一直阻塞,单位为秒。默认为300,如果设置为0,则不会周期性的检测。

    (5)protected-mode:该配置项设置外部网络连接redis服务,设置方式如下:

    • 关闭protected-mode模式,此时外部网络可以直接访问。
    • 开启protected-mode保护模式,需配置bind ip或者设置访问密码。

    5. GENERAL

    (1)daemonize:设置redis是否在后台启动,默认值为 no。

    (2)pidfile:设置PID文件路径,当redis作为守护进程启动时,它会把pid默认写到/var/run/redis_6379.pid文件里面。

    (3)loglevel :定义日志级别。默认值为notice,可选值有以下4种:

    • debug(记录大量日志信息,适用于开发、测试阶段)
    • verbose(较多日志信息)
    • notice(适量日志信息,适用于生产环境)
    • warning(仅记录部分重要、关键信息)

    (4)logfile:配置log文件地址,默认打印在命令行终端的窗口上。

    (5)databases:设置数据库的数量,默认为16。默认为第0个数据库,客户端可通过select <dbid>命令选择一个数据库。

    6. SNAPSHOTTING

    (1)save:设置触发RDB方式的持久化条件,默认如下配置:

    save 900 1:表示900 秒内如果至少有 1 个 key 的值变化,则保存
    save 300 10:表示300 秒内如果至少有 10 个 key 的值变化,则保存
    save 60 10000:表示60 秒内如果至少有 10000 个 key 的值变化,则保存
    

    如果我们只是使用Redis的缓存功能,不需要对数据进行持久化,那么可以注释掉所有的 save 行来停用持久化功能。

    (2)stop-writes-on-bgsave-error:默认值为yes。当启用了RDB并且最后一次保存数据失败时,Redis是否停止写入数据。

    (3)rdbcompression:默认值是yes。用于表示持久化时,写入磁盘的快照文件是否需要压缩处理。

    (4)rdbchecksum:默认值是yes。在存储快照后,我们还可以让redis进行数据校验,但这样做会增加更多的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。

    (5)dbfilename:设置快照的文件名,默认是dump.rdb

    (6)dir:设置快照文件的存放路径。

    7. REPLICATION

    (1)replica-serve-stale-data:默认值为yes。当从节点与主节点断开连接,或者正在同步数据时,从节点可能会有两种表现:

    • 如果为yes,从节点可以继续响应客户端请求,但返回的数据可能是过时的。
    • 如果为no,从节点在以上情况不再响应客户端请求,此时会返回"SYNC with master in progress" 的错误。

    (2)replica-read-only:配置Redis的从节点是否只读,默认值为yes。

    (3)repl-diskless-sync:主从数据复制是否使用无硬盘复制功能,默认值为no。

    8. SECURITY

    (1)rename-command:命令重命名,通常用于将一些重要命令重命名,从而起到安全保护的作用。例如:

    • flushdb(清空数据库)
    • flushall(清空所有记录)
    • config(客户端连接后可配置服务器)
    • keys(客户端连接后可查看所有存在的键)

    可通过rename-command FLUSHALL ""禁用命令,也可以保留命令但是不能轻易使用,如:rename-command FLUSHALL abcdefg。这样的话,重启服务器后则需要使用新命令来执行,否则服务器会报错unknown command。

    (2)requirepass:设置redis的连接密码,比如:requirepass 123

    9. CLIENTS

    (1)maxclients:设置客户端最大并发连接数,默认无限制。如果设置maxclients为0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息。

    10. MEMORY MANAGEMENT

    (1)maxmemory:设置Redis的最大内存,如果设置为0,表示不作限制。该配置项通常是配合下面介绍的maxmemory-policy参数一起使用。

    (2)maxmemory-policy :当内存使用达到maxmemory设置的最大值时,redis使用的内存清除策略。有以下几种可以选择:

    • volatile-lru :使用LRU算法移除即将过期的key,只针对设置了过期时间的key。
    • allkeys-lru :使用LRU算法移除即将过期的key。
    • volatile-random:随机移除即将过期的key,只针对设置了过期时间的key。
    • allkeys-random:随机移除即将过期的key。
    • volatile-ttl:移除即将过期的key。
    • noeviction:不移除任何key,直接返回一个写错误,默认选项。

    (3)replica-ignore-maxmemory:默认值为yes,是否忽略从节点的内存限制。

    11. APPEND ONLY MODE

    (1)appendonly:默认情况下redis使用的是RDB方式持久化,这种方式在许多场景中已经足够用了。但是这种方式可能会导致可能有几分钟的数据丢失,而AOF是另一种持久化方式, 可以提供更好的持久化特性。Redis会把写命令都写入appendonly.aof文件,如果启动AOF,每次启动时,Redis都会先把这个文件的数据读入内存里,而忽略RDB文件。默认值为no。

    (2)appendfilename:aof文件名,默认是appendonly.aof

    (3)appendfsync:aof持久化策略的配置,默认值为everysec

    • no:表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快;
    • always:表示每次写入都执行fsync,以保证数据同步到磁盘;
    • everysec:表示每秒执行一次fsync,可能会导致丢失这1s数据。

    (4)no-appendfsync-on-rewrite:在aof重写或者写入rdb文件的时候,会执行大量IO,此时对于everysec和always的aof模式来说,执行fsync会造成阻塞过长时间,no-appendfsync-on-rewrite字段设置为默认设置为no。如果对延迟要求很高的应用,这个字段可以设置为yes,这样对持久化特性来说这是更安全的选择。设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes。Linux的默认fsync策略是30秒,可能丢失30秒数据。

    (5)auto-aof-rewrite-percentage:默认值为100。aof自动重写配置,当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候,Redis能够调用bgrewriteaof对日志文件进行重写。这样做的目的是压缩aof文件,当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程。

    (6)auto-aof-rewrite-min-size:64mb。设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写。

    12. LUA SCRIPTING

    (1)lua-time-limit:一个lua脚本执行的最大时间,单位为ms。默认值为5000。

    13. REDIS CLUSTER

    (1)cluster-enabled:是否启用集群,默认是不开启集群模式。

    (2)cluster-config-file:集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。 这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件。需要确保与实例运行的系统中配置文件名称不冲突,默认配置为nodes-6379.conf

    (3)cluster-node-timeout:可以配置值为15000。节点互连超时的阀值,集群节点超时毫秒数。

    (4)cluster-slave-validity-factor :可以配置值为10。在进行故障转移的时候,全部从节点都会请求申请为主节点,但是有些从节点可能与主节点断开连接一段时间了, 导致数据过于陈旧,这样的从节点不应该被提升为主节点。该参数就是用来判断从节点与主节点断开的时间是否过长,判断方法是:比较从节点断开连接的时间和(node-timeout * slave-validity-factor) + repl-ping-slave-period 。如果节点超时时间为三十秒, 并且slave-validity-factor为10,假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave将不会尝试进行故障转移。

    (5)cluster-require-full-coverage:默认情况下,集群全部的slot必须是有节点负责,集群状态才为ok,才能对外提供服务。若该配置设置为no,可以在slot没有全部分配的时候提供服务。通常情况下不建议打开该配置,这样会造成分区的时候,小分区的主节点一直在接受写请求,从而造成很长时间数据不一致。

    相关文章

      网友评论

          本文标题:Redis:redis.conf配置文件介绍

          本文链接:https://www.haomeiwen.com/subject/snwqtktx.html