[转帖]Redis配置文件介绍

redis,配置文件,介绍 · 浏览次数 : 0

小编点评

## Redis CLUSTER 配置详解 **1. Cluster Enabled** * 如果 `cluster-enabled` 设置为 `yes`,表示集群启用,否则单例模式启动。 **2. Cluster Configuration File** * 可选参数,指定集群节点自动持久化的配置文件路径。 * 在启动时重新读取配置文件,覆盖默认配置。 **3. Cluster Node Timeout** * 超时时间,如果无法到达集群节点,认为失败。 * 每个节点最多允许超过指定时间内不能到达大多数节点的节点停止接收查询请求。 **4. Cluster Slave Validity Factor** * 如果设置为 0,则一个slave 永远尝试故障转移一个 master。 * 设置正数,最大失去连接的时间为 `node timeout`乘以 `factor`。 **5. Cluster Migration Barrier** * 最少与多少个 slave 保持连接的 slave 才可以成为 master。 * 至少与其他多少 slave保持连接的 slave才有资格成为 master。 **6. Cluster Require Full Coverage** * 如果设置为 `yes`,键空间必须达到百分之多少时才停止接受写请求。 * 如果设置为 `no`,将仍然接受查询请求,即使它只是请求部分key。 **7. Cluster Slave No Failover** * 此选项设置 `yes`,可防止从设备尝试对其进行故障转移master在主故障期间。 * 但仍然可以强制执行手动故障转移。 **8. Slow Log** * 记录执行时间大于多少微秒的查询进行记录。 * 可以在 `slowlog-max-len` 中设置保存的最大日志条数。 **9. Latency Monitor** * 监控执行时间大于多少毫秒的查询,开启延时监控。 **10. Event Notification** * 设置事件通知,当某个 key 的执行时间超过指定的阈值时触发通知。 **11. Advanced Config** * 设置一些高级配置参数,例如 `hash-max-ziplist-entries`、`zset-max-ziplist-entries`等。 **12. HLL Sparse Max Bytes** * 当键大小小于 `hll-sparse-max-bytes` 时使用稀疏数据结构 (sparse)。 * 大于 `hll-sparse-max-bytes` 时使用稠密数据结构 (dense)。 **13. Active Hashing** * 100毫秒内使用 1 毫秒的 CPU 时间对 Redis 的 Hash 表进行重新hash,以降低内存使用。 **14. Client Output Buffer Limit** * 当某些条件下,服务器会立即断开客户端连接。 **15. Client Query Buffer Limit** * 设置客户端查询缓存的最大大小。 **16. Proto Max Bulk Len** * 针对 `proto` 的批量操作,设置最大可处理的长度。 **17. LFU Log Factor** * 设置 LFU 日志记录的饱和(极限)容纳的key数量。 **18. LFU Decay Time** * 计数器的衰变时间。 **19. Active Defrag** * 在 aof 重写时,设置设置的页面大小和数量。 **20. Active Defrag Thresholds** * 两个启用的分段,设置 defrag 阈值。 **21. Active Defrag Cycle Min and Max** * 设置最小和最大 defrag 周期。 **22. Active Defrag Cycle Max** * 设置最大的 defrag 周期。 **23. Virtual Memory** * 支持虚拟内存,设置 `vm-enabled`、`vm-swap-file`、`vm-max-memory` 等参数。 **24. Glue Outputbuf** * 设置在向客户端应答时合并较小的包。

正文

https://www.cnblogs.com/fanqisoft/p/10422381.html

 

  Redis在源码包中存放了一个Redis配置实例文件,文件中对各个配置点进行了简单的介绍,我也通过这个文件来对Redis的一些配置进行一些简单介绍。

一.UNITS(单位)【了解】

  1.Redis服务如果要指定配置文件,则配置文件的路径必须作为第一参数。eg:redis-server /path/to/redis.conf

  2.定义一些基本的度量单位,只支持bytes,不支持bit。

复制代码
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
复制代码

  3.度量单位不区分大小写,1GB、1Gb、1gB等书写方式所代表的含义相同。

二.INCLUDES(包含)【了解】

  1.可以用于包含(引入)一个或多个其他配置文件,eg:include /path/to/local.conf

  2.最好将include书写在配置文件的开头,避免在运行时配置内容被覆盖。

三.MODULES(模块)【了解】

  1.用于启动时加载模块。可以使用该命令加载多个模块。eg:loadmodule /path/to/my_module.so

四.NETWORK(网络)【熟悉】

  1.bind:绑定本机可以接受访问的IP,如果未指定,则接受所有来自于可用网络接口的连接。

  2.protected-mode:保护模式,避免在Internet上Redis实例被访问和利用,如果没有使用bind指令及设置密码则只接收本地连接。默认开启

  3.port:端口,默认6379,如果指定为0,Redis将不会在TCP套接字上侦听。

  4.tcp-backlog:TCP 监听的最大容纳数量,在高并发环境下需要一个高backlog值来避免慢客户端连接问题

  5.unixsocket & unixsocketperm:指定将用于侦听的Unix套接字的路径及值,未指定时,Redis将不会在UNIX套接字上侦听。

  6.timeout:客户端空闲N秒后关闭连接(0禁用)

  7.tcp-keepalive:单位秒,每隔多少秒判断连接是否继续,推荐60

五.GENERAL(通用)【精通】

  1.daemonize:Redis守护进程,默认为no,大多数需要改为yes

  2.supervised:Redis监控

  3.pidfile:指定PID文件路径

  4.loglevel:指定日志记录级别

  5.logfile:指定日志文件名

  6.syslog-enabled:是否把日志输出到syslog中

  7.syslog-ident:指定syslog里的日志标识

  8.syslog-facility:指定syslog设备,值可以是USER或LOCAL0-LOCAL7

  9.databases:设置数据库数。

  10.always-show-logo:是否启动日志中的Logo。

六.SNAPSHOTTING(快照)【精通】

  1.save:在给定秒数内执行了给定写入数将触发,把数据库保存到磁盘上。save 秒数 写操作次数,eg:save 300 10

  2.stop-writes-on-bgsave-error:后台存储发生错误时禁止写入,默认为yes,如果不在乎数据不一致等问题,可以设置为no

  3.rdbcompression:对于存储到磁盘的rdb快照是否启用lzf压缩存储,默认为yes,如果不想消耗cpu等资源来进行压缩,可以设置为no,但会导致快照文件变的巨大。

  4.rdbchecksum:存储快照后,是否使用CRC64算法对rdb数据进行校验,会增大大约10%的性能消耗,默认为yes。如果希望获取最大的性能提升,可以设置为no。

  5.dbfilename:设置rdb快照的文件名

  6.dir:指定rdb快照的存储目录。

七.REPLICATION(主从)【精通】

  1.slaveof:连接主库,slaveof 主库ip 主库端口 eg:slaveof 192.168.2.102 6379

  2.masterauth:如果主库需要密码认证则需要在此处指定。

  3.slave-serve-stale-data:Redis复制在 slave 这一端也是非阻塞的。如果为 yes ,slave 在执行同步时,它可以使用老版本的数据来处理查询请求,如果是 no ,slave 将返回一个错误。在完成同步后,slave 需要删除老数据,加载新数据,在这个阶段,slave 会阻止连接进来。

  4.slave-read-only:从库数据是否只读

  5.repl-diskless-sync:新的从站和重连后不能继续备份的从站,需要做所谓的“完全备份”,即将一个RDB文件从主站传送到从站。这个传送有以下两种方式: 
          1)硬盘备份:redis主站创建一个新的进程,用于把RDB文件写到硬盘上。过一会儿,其父进程递增地将文件传送给从站。 
          2)无硬盘备份:redis主站创建一个新的进程,子进程直接把RDB文件写到从站的套接字,不需要用到硬盘。 
          在硬盘备份的情况下,主站的子进程生成RDB文件。一旦生成,多个从站可以立即排成队列使用主站的RDB文件。在无硬盘备份的情况下,一次RDB传送开始,新的从站到达后,需要等待现在的传送结束,才能开启新的传送。 
          如果使用无硬盘备份,主站会在开始传送之间等待一段时间(可配置,以秒为单位),希望等待多个子站到达后并行传送。 
在硬盘低速而网络高速(高带宽)情况下,无硬盘备份更好。

  6.repl-diskless-sync-delay:无盘复制延时开始秒数,默认是5秒,意思是当PSYNC触发的时候,master延时多少秒开始向master传送数据流,以便等待更多的slave连接可以同时传送数据流,因为一旦PSYNC开始后,如果有新的slave连接master,只能等待下次PSYNC。可以配置为0取消等待,立即开始。

  7.repl-ping-slave-period:slave会每隔repl-ping-slave-period(默认10秒)ping一次master,如果超过repl-timeout(默认 60秒)都没有收到响应,就会认为Master挂了。

  8.repl-timeout:slave会每隔repl-ping-slave-period(默认10秒)ping一次master,如果超过repl-timeout(默认 60秒)都没有收到响应,就会认为Master挂了。

  9.repl-disable-tcp-nodelay:是否在主从同步时是否禁用TCP_NODELAY。如果开启TCP_NODELAY,那么主redis会使用更少的TCP包和更少的带宽来向从redis传输数据。但是这可能会增加一些同步的延迟,大概会达到40毫秒左右。如果你关闭了TCP_NODELAY,那么数据同步的延迟时间会降低,但是会消耗更多的带宽。

  10.repl-backlog-size:设置同步队列长度。队列长度(backlog)是主redis中的一个缓冲区,在与从redis断开连接期间,主redis会用这个缓冲区来缓存应该发给从redis的数据。这样的话,当从redis重新连接上之后,就不必重新全量同步数据,只需要同步这部分增量数据即可。

  11.repl-backlog-ttl:如果主redis等了一段时间之后,还是无法连接到从redis,那么缓冲队列中的数据将被清理掉。我们可以设置主redis要等待的时间长度。如果设置为0,则表示永远不清理。默认是1个小时。

  12.slave-priority:给众多的从redis设置优先级,在主redis持续工作不正常的情况,优先级高的从redis将会升级为主redis。而编号越小,优先级越高。比如一个主redis有三个从redis,优先级编号分别为10、100、25,那么编号为10的从redis将会被首先选中升级为主redis。当优先级被设置为0时,这个从redis将永远也不会被选中。默认的优先级为100。

  13.min-slaves-to-write 3&min-slaves-max-lag 10:假如主redis发现有超过M个从redis的连接延时大于N秒,那么主redis就停止接受外来的写请求。这是因为从redis一般会每秒钟都向主redis发出PING,而主redis会记录每一个从redis最近一次发来PING的时间点,所以主redis能够了解每一个从redis的运行情况。

                        上面这个例子表示,假如有大于等于3个从redis的连接延迟大于10秒,那么主redis就不再接受外部的写请求。上述两个配置中有一个被置为0,则这个特性将被关闭。默认情况下min-slaves-to-write为0,而min-slaves-max-lag为10。

  14.slave-announce-ip&slave-announce-port:常用于端口转发或NAT场景下,对Master暴露真实IP和端口信息。

八.SECURITY(安全)【精通】

  1.requirepass:设置Redis实例密码

  2.rename-command:禁用或重命名命令。eg:rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

九.CLIENTS(客户机)【了解】

  1.maxclients:设置最大连接数

十.MEMORY MANAGEMENT(内存管理)【熟悉】

  1.maxmemory <bytes>:指定Redis最大内存限制。达到内存限制时,Redis将尝试删除已到期或即将到期的Key。

  2.maxmemory-policy:Redis达到最大内存时将如何选择要删除的内容。

  3.maxmemory-samples:设置样本数量,LRU算法 和 最小 TTL 算法都不是精准的算法,而是估算值,所以可以调整样本数量从而改变精确值,Redis默认会检查这么多个Key并选择其中LRU的那个。

十一.LAZY FREEING(惰性删除)【了解】

  1.lazyfree-lazy-eviction:针对redis内存使用达到maxmeory,并设置有淘汰策略时,在被动淘汰键时,是否采用lazy free机制。因为此场景开启lazy free, 可能使用淘汰键的内存释放不及时,导致redis内存超用,超过maxmemory的限制。此场景使用时,请结合业务测试。

  2.lazyfree-lazy-expire:针对设置有TTL的键,达到过期后,被redis清理删除时是否采用lazy free机制。此场景建议开启,因TTL本身是自适应调整的速度。

  3.lazyfree-lazy-server-del:针对有些指令在处理已存在的键时,会带有一个隐式的DEL键的操作。如rename命令,当目标键已存在,redis会先删除目标键,如果这些目标键是一个big key,那就会引入阻塞删除的性能问题。 此参数设置就是解决这类问题,建议可开启。

  4.slave-lazy-flush:针对slave进行全量数据同步,slave在加载master的RDB文件前,会运行flushall来清理自己的数据场景,参数设置决定是否采用异常flush机制。如果内存变动不大,建议可开启。可减少全量同步耗时,从而减少主库因输出缓冲区爆涨引起的内存使用增长。

十二.APPEND ONLY MODE(追加)【熟悉】

  1.appendonly:是否开启AOF持久化

  2.appendfilename:AOF文件名称

  3.appendfsync:设置AOF文件同步策略。有3个可选值

  4.no-appendfsync-on-rewrite:设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no保证数据安全性

  5.auto-aof-rewrite-percentage:aof文件增长比例,指当前aof文件比上次重写的增长比例大小。aof重写即在aof文件在一定大小之后,重新将整个内存写到aof文件当中,以反映最新的状态(相当于bgsave)。这样就避免了,aof文件过大而实际内存数据小的问题(频繁修改数据问题).

  6.auto-aof-rewrite-min-size:aof文件重写最小的文件大小,即最开始aof文件必须要达到这个文件时才触发,后面的每次重写就不会根据这个变量了(根据上一次重写完成之后的大小).此变量仅初始化启动redis有效.如果是redis恢复时,则lastSize等于初始aof文件大小.

  7.aof-load-truncated:指redis在恢复时,会忽略最后一条可能存在问题的指令。默认值yes。即在aof写入时,可能存在指令写错的问题(突然断电,写了一半),这种情况下,yes会log并继续,而no会直接恢复失败.

  8.aof-use-rdb-preamble:Redis4.0新增RDB-AOF混合持久化格式,在开启了这个功能之后,AOF重写产生的文件将同时包含RDB格式的内容和AOF格式的内容,其中RDB格式的内容用于记录已有的数据,而AOF格式的内存则用于记录最近发生了变化的数据,这样Redis就可以同时兼有RDB持久化和AOF持久化的优点(既能够快速地生成重写文件,也能够在出现问题时,快速地载入数据)。

十三.LUA SCRIPTING(Lua 脚本) 【了解】

  1.lua-time-limit:一个Lua脚本最长的执行时间,单位为毫秒,如果为0或负数表示无限执行时间,默认为5000

十四.REDIS CLUSTER(集群)【熟悉】

  1.cluster-enabled:如果是yes,表示启用集群,否则以单例模式启动

  2.cluster-config-file:可选,这不是一个用户可编辑的配置文件,这个文件是Redis集群节点自动持久化每次配置的改变,为了在启动的时候重新读取它。

  3.cluster-node-timeout:超时时间,集群节点不可用的最大时间。如果一个master节点不可到达超过了指定时间,则认为它失败了。注意,每一个在指定时间内不能到达大多数master节点的节点将停止接受查询请求。

  4.cluster-slave-validity-factor:如果设置为0,则一个slave将总是尝试故障转移一个master。如果设置为一个正数,那么最大失去连接的时间是node timeout乘以这个factor。

  5.cluster-migration-barrier:一个master和slave保持连接的最小数量(即:最少与多少个slave保持连接),也就是说至少与其它多少slave保持连接的slave才有资格成为master。

  6.cluster-require-full-coverage:如果设置为yes,这也是默认值,如果key space没有达到百分之多少时停止接受写请求。如果设置为no,将仍然接受查询请求,即使它只是请求部分key。 

  7.cluster-slave-no-failover:此选项设置为yes时,可防止从设备尝试对其进行故障转移master在主故障期间。 然而,仍然可以强制执行手动故障转移。

十五.CLUSTER DOCKER/NAT support(集群Docker/NAT支持)

  1.cluster-announce-ip:要宣布的Ip地址

  2.cluster-announce-port:要宣布的数据端口

  3.cluster-announce-bus-port:要宣布的集群总线端口

十六.SLOW LOG(慢日志)【了解】

  1.slowlog-log-slower-than:决定要对执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查询进行记录

  2.slowlog-max-len:它决定 slow log 最多能保存多少条日志, slow log 本身是一个 FIFO 队列,当队列大小超过 slowlog-max-len 时,最旧的一条日志将被删除,而最新的一条日志加入到 slow log ,以此类推。

十七.LATENCY MONITOR(延迟监控)

  1.latency-monitor-threshold:能够采样不同的执行路径来知道redis阻塞在哪里。这使得调试各种延时问题变得简单,设置一个毫秒单位的延时阈值来开启延时监控。

十八.EVENT NOTIFICATION(事件通知)

  1.notify-keyspace-events:

十九.ADVANCED CONFIG(高级配置)

  1.hash-max-ziplist-entries 512:表示当hash项(field,value)数>512即ziplist项>1024的时候转为dict

  2.hash-max-ziplist-value 64:表示当hash中的value长度超过64的时候转为dict。

  3.list-max-ziplist-size:

  4.list-compress-depth:

  5.set-max-intset-entries:当集合中的元素全是整数,且长度不超过set-max-intset-entries(默认为512个)时,redis会选用intset作为内部编码

  6.zset-max-ziplist-entries:当有序集合的元素小于zset-max-ziplist-entries配置(默认是128个),同时每个元素的值都小于zset-max-ziplist-value(默认是64字节)时,Redis会用ziplist来作为有序集合的内部编码实现,ziplist可以有效的减少内存的使用

  7.zset-max-ziplist-value:当有序集合的元素小于zset-max-ziplist-entries配置(默认是128个),同时每个元素的值都小于zset-max-ziplist-value(默认是64字节)时,Redis会用ziplist来作为有序集合的内部编码实现,ziplist可以有效的减少内存的使用

  8.hll-sparse-max-bytes:value大小 小于等于hll-sparse-max-bytes使用稀疏数据结构(sparse),大于hll-sparse-max-bytes使用稠密的数据结构(dense)。

  9.activerehashing:Redis将在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行重新hash,可以降低内存的使用。

  10.client-output-buffer-limit:某些条件下,服务器就会立即断开客户端连接。

  11.client-query-buffer-limit:

  12.proto-max-bulk-len:

  13.hz:redis执行任务的频率为1s除以hz。

  14.aof-rewrite-incremental-fsync:在aof重写的时候,如果打开了aof-rewrite-incremental-fsync开关,系统会每32MB执行一次fsync。这对于把文件写入磁盘是有帮助的,可以避免过大的延迟峰值。

  15.lfu-log-factor:factor越高,可以达到饱和(极限)容纳的key就越多。

  16.lfu-decay-time:decay-time是计数器的衰变时间。

  17.activedefrag:

  18.active-defrag-ignore-bytes:

  19.active-defrag-threshold-lower:

  20.active-defrag-threshold-upper:

  21.active-defrag-cycle-min:

  22.active-defrag-cycle-max:

 

*  虚拟内存(Redis2.6后已移除)

  1.vm-enabled:是否启用虚拟内存。

  2.vm-swap-file:虚拟内存文件路径

  3.vm-max-memory:将大于vm-max-memory的数据放入虚拟内存,注意,所有的索引数据(Key)不会放入虚拟内存。

  4.vm-page-size:设置swap中page的大小

  5.vm-page:设置swap文件中的page的数量。

  6.vm-max-threads:设置访问swap文件的线程数,最好不要超过机器的核数。

  7.glueoutputbuf:设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启。

与[转帖]Redis配置文件介绍相似的内容:

[转帖]Redis配置文件介绍

https://www.cnblogs.com/fanqisoft/p/10422381.html Redis在源码包中存放了一个Redis配置实例文件,文件中对各个配置点进行了简单的介绍,我也通过这个文件来对Redis的一些配置进行一些简单介绍。 一.UNITS(单位)【了解】 1.Redis服务

[转帖]redis-cluster-proxy安装使用尝试

https://www.cnblogs.com/gered/p/15210509.html 【1】gcc 4.9+安装 【2】redis-cluster-proxy 介绍与安装 下载安装: 配置文件: 启动 【3】连接核验 【4】故障转移 【4.0】查看集群状态 【4.1】集群挂一个主库的影响 【4

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

[转帖]Redis configuration

Redis configuration Redis可以仅使用内建的默认配置启动,而不需要指定配置文件。但是,这种启动仅推荐用于测试和开发。 对于配置Redis恰当的方式是提供一个Redis配置文件,通常叫做redis.conf。redis.conf包含大量的指令,格式如下: keyword argu

[转帖]Redis 的数据被删除,内存占用还这么大?

作者 | 码哥 来源 | 码哥字节 操作系统分配给 Redis 的内存有 6GB,通过指标 used_memory_human 发现存储数据只使用了 4GB,为何会这样?为何无法保存数据? 通过 CONFIG SET maxmemory 100mb或者在 redis.conf 配置文件设置 maxm

[转帖]Redis之安全措施

指令安全 Redis的一些指令会对Redis服务的稳定性及安全性各方面造成影响,例如keys指令在数据量大的情况下会导致Redis卡顿,flushdb和flushall会导致Redis的数据被清空。 Redis在配置文件中提供了 rename-command 指令用于将一些危险的指令修改成其他指令,

[转帖]K8S集群内部 无持久化Redis单节点配置文件

K8S集群内部 无持久化Redis单节点配置文件 apiVersion: apps/v1 kind: Deployment metadata: name: redis-deploy spec: selector: matchLabels: prod: redis replicas: 1 templa

[转帖]k8s部署有状态应用redis-cluster集群踩坑总结

https://segmentfault.com/a/1190000039196137 redis-cluster集群的部署网上一堆,用k8s部署也不在少数,但都是抄来抄去,问题不少,实际操作分享出来的还是太少。 1、redis启动配置文件,使用CofigMap来管理比较方便,redis-confi

[转帖]iptables开放指定端口

https://www.jianshu.com/p/5b44dd20484c 由于业务的需要, MySQL,Redis,mongodb等应用的端口需要我们手动操作开启 下面以 MySQL 为例,开启 3306 端口的远程访问,其他端口类似。 方式一:通过修改iptables文件方式 编辑配置文件 #

[转帖]Docker配置文件/etc/docker/daemon.json详解

该文件作为Docker Engine的配置管理文件,几乎涵盖了所有docker命令行启动可以配置的参数。默认是没有的,需要手动创建 docker- daemon.json各配置详解 { "allow-nondistributable-artifacts": [], #不对外分发的产品提交的regis