Redis配置文件详解(Redis 4.0.8)

Redis配置文件详解(Redis 4.0.8)目录INCLUDES(引入其他配置):MODULES(模块):NETWORK(网络设置):GENERAL(普通设置):SNAPSHOTTING(快照):REPLICATION(复制):SECURITY(安全):CLIENTS(客户端):MEMORYMANAGEMENT(内存管理):LAZYFREEI…

大家好,又见面了,我是你们的朋友全栈君。

目录

INCLUDES  (引入其他配置):

MODULES   (模块):

NETWORK   (网络设置):

GENERAL   (普通设置):

SNAPSHOTTING (快照):

REPLICATION  (复制):

SECURITY     (安全):

CLIENTS      (客户端):

MEMORY MANAGEMENT   (内存管理):

LAZY FREEING        (阻塞释放空间):

APPEND ONLY MODE    (数据文件记录模式):

LUA SCRIPTING       (LUA脚本):

REDIS CLUSTER       (redis集群):

CLUSTER DOCKER/NAT support (集群总线/NAT设置):

SLOW LOG              (延迟日志):

LATENCY MONITOR       (监控延迟命令):

EVENT NOTIFICATION    (事件通知):


INCLUDES  (引入其他配置):

################################## INCLUDES ###################################

# 包含其他配置文件,将redis的配置分离管理时使用
# include /path/to/local.conf
# include /path/to/other.conf

MODULES   (模块):

################################## MODULES #####################################
# 引入自定义模块来新增一些功能。
# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so

NETWORK   (网络设置):

################################## NETWORK #####################################

#绑定redis服务网卡IP地址
bind 127.0.0.1

#是否开启保护模式。如果redis没有显示绑定到一组地址或未设置密码,
#服务器只接受本地客户机以及来自unix域套接字链接
protected-mode yes

#端口号
port 6379

# 在每秒高请求的环境中,您需要一个高backlog,以避免慢客户机连接问题。
# 注意,Linux内核将静默地将其截断为/proc/sys/net/core/somaxconn的值,
# 因此请确保同时提高somaxconn和tcp_max_syn_backlog的值,以便获得预期的效果。
tcp-backlog 511

# 指定用于侦听传入连接的Unix套接字的路径。
# 在未指定时,Redis不会在unix套接字上侦听。
# unixsocket /tmp/redis.sock
# unixsocketperm 700

#设置客户端连接超时时间(秒),0表示不设置
timeout 0

#周期性监测客户端是否处于健康状态,避免服务器一直阻塞
tcp-keepalive 300

GENERAL   (普通设置):

################################# GENERAL #####################################

#是否以守护进程方式启动(后台启动),默认是no
daemonize yes

# 若从upstart或systemd运行Redis,则Redis可以与监控树交互。
#   supervised no      -无相互监督
#   supervised upstart - 使Redis进入SIGSTOP模式并监控upstart
#   supervised systemd - 通过设置READY=1到$NOTIFY_SOCKET来监控systemd
#   supervised auto    - 基于UPSTART_JOB或NOTIFY_SOCKET环境变量的监督自动检测upstart或systemd方法
supervised no

#配置PID文件路径,当redis以守护进程运行时,它会将pid默认写到/var/run/redis_6379.pid文件中
pidfile /var/run/redis_6379.pid

#日志级别,debug/verbose/notice/warning
loglevel notice

# 设置log文件地址,默认输出到终端窗口
logfile ""

#系统日志是否开启
# syslog-enabled no

#指定syslog标识
# syslog-ident redis

# 指定输出日志设备 LOCAL0-LOCAL7.
# syslog-facility local0

# 默认redis中的库的数量
databases 16

# 默认logo标识只在交互回话中显示。
# 该设置可以设置始终在启动日志中显示ASCII art徽标。
always-show-logo yes

SNAPSHOTTING (快照):

################################ SNAPSHOTTING (快照) ################################
#指定多长时间内(秒),有多少次更新操作,就将数据同步到数据文件,可以多条件配合
save 900 1    # 900s内至少有一次更新操作则保存
save 300 10
save 60 10000

# 当启用RDB最后一次后台保存数据失败,redis停止接受数据,以通知用户数据没有正确持久化到磁盘中。
stop-writes-on-bgsave-error yes

# 指定存储至本地数据库时是否压缩数据,默认为yes。关闭压缩会节省CPU时间,但会导致数据文件变大
rdbcompression yes

# 存储快照后,让redis使用CRC64算法进行数据校验,但是增大了性能消耗。
rdbchecksum yes

# 指定本地数据库文件名
dbfilename dump.rdb

# 指定本地数据库存放位置
dir ./

REPLICATION  (复制):

################################# REPLICATION #################################

#  当本机为slave服务时,设置master服务的IP和端口号,(主从配置)
#  在Redis启动时,会自动从master进行数据同步
slaveof <masterip> <masterport>

# 当master服务设置了密码保护是,slave服务连接master的密码
masterauth <master-password>

#当一个slav和一个master是去联系或在进行复制时,slave是否进行应答。
# yes,Slave扔会应答请求,但返回数据可能已过时,或者数据为空
# no,在执行info he slaveof 之外的命令时,slave将返回一个"SYNC with master in progress"
slave-serve-stale-data yes

# slave是否只读
slave-read-only yes

# 主从数据复制是否使用无硬盘复制功能
repl-diskless-sync no

# 启用无硬盘备份,设置服务器等待多少秒后才会通过套接字向从站传送RDB文件
repl-diskless-sync-delay 5

# 从服务器以预定义的时间间隔向服务器发送ping信号。默认值是10秒。
# repl-ping-slave-period 10

# 以下选项将复制超时设置为:
# 1)从从站的角度看,同步过程中的批量I/O传输。
# 2)从从服务器(数据、ping)的角度分析主超时。
# 3)从主从超时的角度(REPLCONF ACK ping)。
# 一定要确保这个值大于为复制-ping-slave-period指定的值,否则每次主从之间的通信量较低时都会检测到超时。
# repl-timeout 60

# 在同步之后是否禁用从套接字上的TCP_NODELAY 
# yes ,Redis将使用更少的TCP包和更少的带宽将数据发送给从服务器。
#        但是,这可能会增加数据出现在从端上的延迟,在使用默认配置的Linux内核中,延迟最多可达40毫秒
# no, 数据出现在从端上的延迟将会减少,但是更多的带宽将用于复制。
repl-disable-tcp-nodelay no

# 设置复制待办事项列表的大小。backlog是一个缓冲区,当从服务器断开连接一段时间后,
# 它会积累从服务器的数据,因此当从服务器想要重新连接时,通常不需要完全重新同步,
# 但是部分重新同步就足够了,只需要传递从服务器断开连接时丢失的部分数据。
#
# 复制待办事项列表越大,从服务器断开连接的时间就越长,之后就可以执行部分重新同步。
#
# 积压只在至少连接了一个从属节点之后才分配。
# repl-backlog-size 1mb

# 当一个主进程在一段时间内不再连接从进程之后,backlog将被释放。
# 设置释放backlog缓冲区所需的秒数,从最后一个从断开连接开始。
# 0意味着永远不释放backlog。
# repl-backlog-ttl 3600

#slave节点的优先级,低优先的slave节点更容易被提升为master节点
# 优先级为0,则该slave节点不能被提升为master节点
slave-priority 100

# 如果连接的从服务器少于N个,延迟小于或等于M秒,那么主服务器就有可能停止接受写操作。
# 比如下面的设置,需要使用延迟<= 10秒的至少3个slave节点,master节点才继续写操作
# 默认设置min-slaves-to-write 0  , min-slaves-max-lag 10
# min-slaves-to-write 3
# min-slaves-max-lag 10

# slave节点可以使用以下两个选项向master报告一组特定的IP和端口
# 如果只需要覆盖端口或IP地址,则不需要同时使用这两个选项。
# slave-announce-ip 5.5.5.5
# slave-announce-port 1234

SECURITY     (安全):

################################## SECURITY ###################################

# 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时
# 需要通过AUTH <password> 命令提供密码,默认关闭
# requirepass foobared

# 重命名命令 rename-command command1 newName,也可以禁用某些命令,如下面这种方式就是禁用CONFIG命令
# rename-command CONFIG ""

CLIENTS      (客户端):

################################### CLIENTS ####################################

#允许最大客户端连接数
maxclients 10000

MEMORY MANAGEMENT   (内存管理):

############################## MEMORY MANAGEMENT ################################

# redis最大内存限制,redis达到最大内存后,会尝试清除已到期或即将到期的key。
# 若清理后仍然达到最大内存设置,将无法继续写入。
maxmemory <bytes>

#过期策略  
#noeviction永不过期
#volatile-lru  使用LRU算法移除key,只对设置了过期时间的key
#volatile-random  在过期集合中随之移除key,只对设置了过期时间的key
#allkeys-lru 使用LRU算法移除key
#allkeys-random 随机移除key
#volatile-ttl 移除那些TTL最小的key,即最近要过期的key 
# maxmemory-policy noeviction

# 设置检验样本数,默认3。LRU和TTL算法不是很精准,设置样本检验大小进行验证。
# maxmemory-samples 5

LAZY FREEING        (阻塞释放空间):

############################# LAZY FREEING ####################################

# 对不同数据的删除策略,设置是否阻塞
# Redis删除数据FLUSHALL和FLUSHDB的DEL、UNLINK和ASYNC选项由用户控制,且默认都是阻塞的。
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no

APPEND ONLY MODE    (数据文件记录模式):

############################## APPEND ONLY MODE ###############################

# 是否每次更新后进行日志记录。Redis默认异步将数据写入磁盘,数据在一段时间内只存在于内存中。
appendonly no

# 指定更新日志文件名
appendfilename "appendonly.aof"

#指定更新日志条件
# no表示等操作系统进行数据缓存同步到磁盘(快)
# always 表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
# everysec 每秒同步一次(折中,默认值) 
appendfsync everysec 

# 设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes。
# Linux的默认fsync策略是30秒。可能丢失30秒数据。默认值为no
no-appendfsync-on-rewrite no

# aof自动重写配置,当前aof文件超过上一次重写大小的百分之多少进行重写。
auto-aof-rewrite-percentage 100
# 允许重写的最小aof文件大小,避免达到约定百分比但尺寸仍然很小时还要重写
auto-aof-rewrite-min-size 64mb

# aof文件尾部可能被截断,数据不完整。yes,当截断的aof文件被导入,会自动发布一个log给客户端然后load;
# no,用户必须手动redis-check-aof修复AOF 文件才可以。
aof-load-truncated yes

# 当重写AOF文件时,Redis能够在AOF文件中使用RDB序言,以便更快地重写和恢复。
# 当这个选项打开时,重写的AOF文件由两个不同的节组成:  (RDB文件)(AOF尾巴)
# 当加载Redis时,识别出AOF文件以“Redis”字符串开始并加载前缀RDB文件,然后继续加载AOF尾部。
# 目前,为了避免格式更改的意外,默认情况下关闭了该选项,但在某些情况下,它将被用作默认选项。
aof-use-rdb-preamble no

LUA SCRIPTING       (LUA脚本):

################################ LUA SCRIPTING  ###############################

# 一个lua脚本执行的最大时间,ms
lua-time-limit 5000

REDIS CLUSTER       (redis集群):

################################ REDIS CLUSTER  ###############################
#是否开启集群,默认不开启
# cluster-enabled yes

# 集群配置文件名称。每个节点都有一个单独的集群相关的配置文件,持久化保存集群信息。
# 这个文件不需要手动配置,由redis自动生成并更新。
# cluster-config-file nodes-6379.conf

# 节点之间互联超时的阀值,ms
# cluster-node-timeout 15000

#用于判断slave节点和master断开的时间阀值,超过该值slave节点不能申请成为master节点。 
# cluster-slave-validity-factor 10

# master的slave数大于该值,slave侧能迁移到其他孤立的master上
# cluster-migration-barrier 1

# 默认集群中所有的slot有节点负责,集群状态才为OK,才能提供服务。
# cluster-require-full-coverage yes

# In order to setup your cluster make sure to read the documentation
# available at http://redis.io web site.

CLUSTER DOCKER/NAT support (集群总线/NAT设置):

########################## CLUSTER DOCKER/NAT support  ########################

# 在某些部署中,Redis集群节点地址发现失败,因为地址是NAT-ted的,
# 或者因为端口被转发(典型的情况是Docker和其他容器)。
# 为了让Redis集群在这样的环境中工作,需要一个静态配置,指定节点的公共地址 。
# 每个节点都指示节点的地址、客户端端口和集群消息总线端口。
# 然后将信息发布到总线包的头部,以便其他节点能够正确映射发布信息的节点的地址。
# 
# cluster-announce-ip 10.1.1.5
# cluster-announce-port 6379
# cluster-announce-bus-port 6380

SLOW LOG              (延迟日志):

################################## SLOW LOG ###################################

# Redis slowlog是一个记录超过指定执行时间的查询的系统。
# 设置Redis命令的执行时间(以微秒为单位)超过多少,便记录命令
# 注意,负数禁用slowlog,而值0强制记录每个命令。
slowlog-log-slower-than 10000

# slowlog 的长度
slowlog-max-len 128

LATENCY MONITOR       (监控延迟命令):

################################ LATENCY MONITOR (延迟监控)##############################

# Redis延迟监视子系统在运行时采样不同的操作,以便收集与Redis实例的潜在延迟源相关的数据。
# 通过LATENCY命令,可以将此信息提供给能够打印图形和获取报告的用户。
# 系统只记录在等于或大于通过延迟监视阀值配置指令指定的毫秒数的时间内执行的操作。
# 当它的值被设置为零时,延迟监视器将被关闭。
# 如果需要,可以在运行时使用“CONFIG SET延迟监控器阈值<milliseconds>”命令轻松启用延迟监视。
latency-monitor-threshold 0

EVENT NOTIFICATION    (事件通知):

############################# EVENT NOTIFICATION ##############################

# Redis可以将密钥空间中发生的事件通知发布/订阅客户端。这个特性记录在http://redis.io/topics/notifications
# 如果启用了keyspace事件通知,并且客户端对存储在数据库0中的key "foo"执行DEL操作,则两条消息将通过Pub/Sub发布:
# 默认情况下,所有通知都是禁用的
notify-keyspace-events ""

ADVANCED CONFIG       (高级设置):

############################### ADVANCED CONFIG ###############################

# 指定在超过一定的数量或最大元素超过某一临界值时,采用一种特殊的哈希算法
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

# 列表也以一种特殊的方式编码,以节省大量空间。每个内部列表节点允许的条目数可以指定为固定的最大大小或元素的最大数量。
# 对于固定的最大大小,使用-5到-1,表示:
# -5:最大大小:64 Kb <——不建议用于正常工作负载
# -4:最大大小:32 Kb <——不推荐
# -3:最大大小:16kb <——可能不推荐
# -2:最大大小:8kb <——很好
# -1:最大大小:4 Kb <——很好
# 正数表示每个列表节点上存储的元素数精确到_exactly_。
# 性能最好的选项通常是-2 (8 Kb大小)或-1 (4 Kb大小),但如果您的用例是惟一的,则根据需要调整设置。
list-max-ziplist-size -2

# 列表压缩深度,压缩深度是指从列表的*each*边到*exclude*压缩的quicklist ziplist节点的数量。
# 0:禁用所有列表压缩
# 1: depth 1的意思是“在列表中1个节点之后才开始压缩,从head或tail开始”
#          所以(头):- >节点- >节点- >…- >节点- >(尾巴)
#          [头]、[尾]永远不会被压缩;内部节点将被压缩。
# 2:[头]- >[下]- >节点- >节点- >…- >节点- >[上一页]- >(尾巴)
#         这里的意思是:不要压缩head或head->next或tail->prev或tail,而是压缩它们之间的所有节点。
# 3:[头]- >[下]- >[下]- >节点- >节点- >…- >节点- >[上一页]- >[上一页]- >(尾巴)
list-compress-depth 0

# 还有这样一种特殊编码的情况:数据全是64位无符号整型数字构成的字符串。 
# 下面这个配置项就是用来限制这种情况下使用这种编码的最大上限的。
set-max-intset-entries 512

# 有序序列也可以用一种特别的编码方式来处理,可节省大量空间。 
# 这种编码只适合长度和元素都符合下面限制的有序序列:
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

# HyperLogLog稀疏表示字节限制。限制包括16个字节的头。
# 当使用稀疏表示的HyperLogLog超过此限制时,它将被转换为稠密表示。
# 大于16000的值是完全无用的,因为此时密集表示更有效。
# 建议值为0~ 3000,以在不降低太多PFADD(稀疏编码的O(N))的情况下,获得空间高效编码的优点。
# 如果不关心CPU,但关心空间,并且数据集由许多基数在0 - 15000范围内的超loglog组成,则可以将该值提高到~ 10000。
hll-sparse-max-bytes 3000

# 是否激活重置哈希,默认开启
activerehashing yes

# 客户端输出缓存限制强迫断开读取速度比较慢的客户端
# client-output-buffer-limit <类别> <强制限制> <软性限制> <软性时间>
# 当达到强制限制缓存大小,立即断开连接;达到软性限制,仍会有软性时间大小的链接时间
# 默认正常客户端无限制,只有请求后,异步客户端数据请求速度快于它能读取数据的速度
# 订阅模式和主从客户端又默认限制,因为它们都接受推送。
# 强制限制和软性限制都可以设置为0来禁用这个特性
client-output-buffer-limit normal 0 0 0        #正常的客户端包括监控客户端
client-output-buffer-limit slave 256mb 64mb 60  #从客户端
client-output-buffer-limit pubsub 32mb 8mb 60   #客户端至少订阅了一个频道或者模式

# 客户机查询缓冲区积累新命令。默认情况下,它们被限制在一个固定的数量,
# 以避免协议去同步(例如由于客户机中的一个bug)将导致查询缓冲区中的内存使用未绑定。
# 但是,如果您有非常特殊的需求,比如美国的巨大的multi/exec请求或类似的需求,您可以在这里配置它。
# client-query-buffer-limit 1gb

# 在Redis协议中,大容量请求(即表示单个字符串的元素)通常被限制在512 mb以内。
# proto-max-bulk-len 512mb

# 设置后代redis任务执行频率,如清除过期键任务
# 范围1-500,值越大CPU消耗越大,建议不超过100
hz 10

# 当子进程进重写aof,以下选项开启时,aof每产生32M数据同步一次
aof-rewrite-incremental-fsync yes

# 可以调优Redis LFU清除(参见maxmemory设置)。
# 但是,最好从默认设置开始,只有在研究了如何改进性能和键LFU如何随时间变化(可以通过OBJECT FREQ命令进行检查)之后才更改它们。
# 在Redis LFU实现中有两个可调参数:计数器对数因子和计数器衰减时间。在更改这两个参数之前,理解它们的含义是很重要的。
# LFU计数器仅为每个键8位,其最大值为255,因此Redis使用具有对数行为的概率增量。
# 给定旧计数器的值,当访问一个键时,计数器按如下方式递增:
#     1. 提取0到1之间的随机数R。
#    2. 概率P计算为1/(old_value*lfu_log_factor+1)。
#    3.计数器只有在R < P时才递增。
# 默认的lfu-log因子是10。这是一个频率计数器如何随着不同的访问次数和不同的对数因子变化的表:
# +--------+------------+------------+------------+------------+------------+
# | factor | 100 hits   | 1000 hits  | 100K hits  | 1M hits    | 10M hits   |
# +--------+------------+------------+------------+------------+------------+
# | 0      | 104        | 255        | 255        | 255        | 255        |
# +--------+------------+------------+------------+------------+------------+
# | 1      | 18         | 49         | 255        | 255        | 255        |
# +--------+------------+------------+------------+------------+------------+
# | 10     | 10         | 18         | 142        | 255        | 255        |
# +--------+------------+------------+------------+------------+------------+
# | 100    | 8          | 11         | 49         | 143        | 255        |
# +--------+------------+------------+------------+------------+------------+
# 注:上表是通过运行以下命令得到的:
#    redis-benchmark -n 1000000
#    redis-cli对象freq foo
# 注2:计数器的初始值为5,以便让新对象有机会累积命中。
# 计数器衰减时间是键计数器除以2(如果值小于<= 10,则衰减)所必须经过的时间,单位为分钟。
# lfu- decaytime的默认值是1。一个特殊的值0表示每次扫描计数器时计数器都会衰减。 

# lfu-log-factor 10
# lfu-decay-time 1

ACTIVE DEFRAGMENTATION(活跃碎片整理):

########################### ACTIVE DEFRAGMENTATION(活跃碎片整理) #######################
# 警告:这个特性是实验性的。然而,即使在生产过程中,它也要经过压力测试,并由多位工程师进行了一段时间的手工测试。
# 活动(在线)碎片整理允许Redis服务器压缩内存中较小的数据分配和释放位置之间的空间,从而允许回收内存。
# 碎片是每个分配器和某些工作负载都会发生的自然过程(但幸运的是,对于Jemalloc就不那么常见了)。
# 通常需要重新启动服务器来降低碎片,或者至少清除所有数据并重新创建它。然而,由于Oran Agra为Redis 4.0实现的这个特性,
# 这个过程可以在运行时以一种“热”的方式发生,同时服务器正在运行。
# 分裂时基本上超过一定水平(见下面的配置选项)复述,将开始创建新副本的值在连续的内存区域利用
# 特定Jemalloc特性(为了理解如果一个分配导致分裂和分配在一个更好的地方),同时,将旧的数据的副本。
# 对所有键递增地重复此过程将导致碎片回落到正常值。
# 需要了解的重要事项:
#    1. 默认情况下,此功能是禁用的,并且只有在编译Redis时使用我们附带的Jemalloc的副本(附带Redis的源代码)才能工作。这是Linux构建的默认设置。
#    2. 如果没有碎片问题,则永远不需要启用此功能。
#    3.一旦您经历了碎片化,您可以在需要时使用“CONFIG SET activedefrag yes”命令启用此功能。
# 配置参数能够微调碎片整理过程的行为。如果您不确定它们的意思,最好不要使用缺省值。

# Enabled active defragmentation
# activedefrag yes

# Minimum amount of fragmentation waste to start active defrag
# active-defrag-ignore-bytes 100mb

# Minimum percentage of fragmentation to start active defrag
# active-defrag-threshold-lower 10

# Maximum percentage of fragmentation at which we use maximum effort
# active-defrag-threshold-upper 100

# Minimal effort for defrag in CPU percentage
# active-defrag-cycle-min 25

# Maximal effort for defrag in CPU percentage
# active-defrag-cycle-max 75

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135756.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号