一 常用配置
Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize no
当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile /var/run/redis.pid
指定Redis监听端口,默认端口为6379
port 6379
绑定的主机地址
bind 127.0.0.1
当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 300
指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning
loglevel verbose
日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null
logfile stdout
设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
databases 16
指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
save <seconds> <changes>
Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000
分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes
指定rdb数据库文件名,默认值为dump.rdb
dbfilename dump.rdb
指定rdb数据库存放目录
dir ./
设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
slaveof <masterip> <masterport>
当master服务设置了密码保护时,slav服务连接master的密码
masterauth <master-password>
设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭
requirepass foobared
设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息
maxclients 128
指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区
maxmemory <bytes>
指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
appendonly no
指定更新日志文件名,默认为appendonly.aof
appendfilename appendonly.aof
指定更新日志条件,共有3个可选值:
no:表示等操作系统进行数据缓存同步到磁盘(快)
always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
everysec:表示每秒同步一次(折中,默认值)
appendfsync everysec
二 详细配置
# 存储单位说明,不区分大小写
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
################################## INCLUDES ###################################
# 引入其他配置文件
# include /path/to/local.conf
# include /path/to/other.conf
################################## MODULES #####################################
# 引入其他模块
# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so
################################## NETWORK #####################################
# 绑定客户端IP
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
# 默认绑定仅本地可以访问
bind 127.0.0.1
# 保护模式
protected-mode yes
# 开放的端口(连接端口)
port 6379
# 为了避免客户端连接缓慢的问题。
tcp-backlog 511
# 指定用于监听传入连接的Unix套接字的路径没有缺省值,所以当未指定时,Redis将不会监听unix套接字。
# unixsocket /tmp/redis.sock
# unixsocketperm 700
# 当客户端空闲N秒后关闭连接(0表示禁用)
timeout 0
# 指定TCP连接是否为长连接,"侦探"信号有server端维护,长连接将会额外的增加server端的开支(TCP socket选项)
# 默认为0.表示禁用,非0值表示开启"长连接";"侦探"信号的发送间隔将有linux系统决定
# 在多次"侦探"后,如果对等端(客户端socket)仍不回复,将会关闭连接,否则连接将会被保持开启.
# client端socket也可以通过配置keepalive选项,开启"长连接".(单位:秒)
tcp-keepalive 300
################################# GENERAL #####################################
# 将redis是否以后台进程的方式运行,默认为"no"
daemonize no
# 以系统服务运行,并交由系统监管
supervised no
# 如果"daemonize yes",那么将会把进程id号信息写入指定文件中.
pidfile /var/run/redis_6379.pid
# 日志级别 debug verbose notice warning
loglevel notice
# 指定日志文件名。
# 默认空字符串表示强迫Redis登录标准输出。如果是配置了后台运行,则日志将被发送到/dev/null
logfile ""
# 要启用对系统日志记录器的日志记录,只需将“syslog-enabled”设置为yes,并可选择更新其他syslog参数以满足您的需要。
# syslog-enabled no
# 指定syslog标识。
# syslog-ident redis
# 指定syslog设施。必须是用户或在LOCAL0-LOCAL7之间。
# syslog-facility local0
# 设置数据库的数量。默认的数据库是DB 0,你可以在每个连接的基础上使用select <dbid>选择一个不同的数据库
databases 16
# 标准输出时日志的配置
always-show-logo yes
################################ SNAPSHOTTING ################################
#
# 将数据库保存到磁盘上:
# 格式如下:
# save <seconds> <changes>
# 可以通过注释掉所有的“保存”行来完全禁用保存。
# 可以通过添加一个带有一个空字符串参数的save指令来删除所有之前配置的保存点
# save ""
# 在下面的例子说明
# 900秒内有1次修改操作则触发保存
# 300秒内有10次修改操作则触发保存
# 60秒内有10000次修改操作则触发保存
save 900 1
save 300 10
save 60 10000
# 默认情况下,如果redis保存快照失败,则会拒绝写操作。 可以让用户及时发现问题。
# 当后续快照保存成功后,redis恢复接受写操作。
stop-writes-on-bgsave-error yes
# dump .rdb快照文件是否启用压缩保存。
# 启用压缩,则会占用一定的cpu,如果不启用,则快照文件相对对占用更大的磁盘空间
rdbcompression yes
# redis从5.x版本开始,在保存快照的时候会在快照文件末尾加入一个CRC64校验。
# 该功能可以使快照更抗损坏,但相对的在保存和加载快照文件的时候会怎么10%左右的性能消耗。
rdbchecksum yes
# 快照文件名称
dbfilename dump.rdb
# 快照文件(rdb/AOF)的保存路径
dir ./
################################# REPLICATION #################################
# 主从复制。使用replicaof使Redis实例成为副本
# replicaof <masterip> <masterport>
# 主从复制。主节点的密码(如果有密码的话)
# masterauth <master-password>
# 当一个副本失去与主服务器的连接,或者当复制仍在进行中,副本可以以两种不同的方式工作:
# 1)如果replica- service -stale-data被设置为“yes”(默认值),副本仍然会回复客户端请求,不过需要注意的是数据可能会没有与主节点同步。
# 2)如果replica- server -stale-data被设置为“no”,副本将回复一个错误“SYNC with master in progress”。
# 除了如下命令:INFO, replicaOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG,SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB,COMMAND, POST, HOST: and LATENCY.
replica-serve-stale-data yes
# 可以配置一个副本实例接受或不接受写操作。对副本实例进行写入可能有助于存储一些临时数据(因为写入在副本上的数据在与主机重新同步后很容易删除),但如果客户端由于配置错误而写入到副本上,也可能导致问题。
# Redis 2.6默认副本是只读的。
replica-read-only yes
# 复制同步策略:磁盘或套接字。
# 1)磁盘支持:Redis主进程创建一个新的进程,将RDB文件写入磁盘。稍后,文件由父进程以增量方式传输到副本。
# 2)无磁盘:Redis主创建一个新进程,直接将RDB文件写入到副本套接字中
repl-diskless-sync no
# 当启用了无磁盘复制时,可以配置服务器等待的延迟,以便生成通过套接字将RDB传输到副本的子进程。
# 延迟以秒为单位,默认为5秒。禁用延迟则设置为0秒。
repl-diskless-sync-delay 5
# 复制以预先定义的间隔发送ping到服务器。可以使用repl_ping_replica_period选项更改此间隔。默认值是10秒。
# repl-ping-replica-period 10
# 设置复制超时时间
# repl-timeout 60
# 如果选择“yes”,Redis将使用更少的TCP数据包和更少的带宽发送数据到副本。但是这可能会增加数据出现在副本端的延迟,在使用默认配置的Linux内核中,延迟高达40毫秒。
# 如果选择“no”,数据延迟减少,但更多的带宽将被用于复制。
# 默认情况下,我们优化低延迟,但在非常高的流量条件下,或者当主服务器和副本有很多数据时,将它改为“yes”性能更好。
repl-disable-tcp-nodelay no
# 设置复制积压的缓冲区(repl-backlog)大小,当副本断开连接一段时间后,它会缓存副本数据,这样当副本重新连接时,通常不需要完全的重新同步,增量重新同步就足够了,只传递副本断开连接时丢失的那部分数据。
# repl-backlog-size 1mb
# 主服务器在一段时间内不再连接到副本后,repl-backlog缓存将被释放。下面的选项配置了从最后一个副本断开连接的时间开始需要释放积压缓冲区的秒数。
# 值为0意味着永远不释放
# repl-backlog-ttl 3600
# 复制优先级:
# 当主服务器不能正常工作时,Redis Sentinel用来选举一个副本提升为主服务器。
# 值越大,越有可能被选举为主节点
replica-priority 100
# 如果连接的副本少于N,延迟小于或等于M秒,master有可能停止接受写操作。
# 下面配置说明:至少需要3个副本,延迟需要小于等于10秒(ping命令的延迟)
# 如果把其他一个的值设置为0,则表示禁用该功能
# min-replicas-to-write 3
# min-replicas-max-lag 10
# Redis master可以用不同的方式列出副本的地址和端口。例如,“INFO replication”提供了这些信息,Redis Sentinel使用这些信息和其他工具来发现副本实例。
# 但是当端口转发或网络地址转换(NAT)被使用时,可以通过配置IP和端口来连接到副本。
# replica-announce-ip 5.5.5.5
# replica-announce-port 1234
################################## SECURITY ###################################
# 要求客户端在处理任何其他命令之前发出AUTH <PASSWORD>
# requirepass foobared
# 命令重命名。在共享环境中可以更改危险命令的名称。
# 例如:rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
# rename-command CONFIG ""
################################### CLIENTS ####################################
# 设置最大客户端的最大连接数
# maxclients 10000
############################## MEMORY MANAGEMENT ################################
# 设置最大使用的内存限制
# maxmemory <bytes>
# 内存满了之后,清理内存空间的策略
# volatile-lru -> Evict using approximated LRU among the keys with an expire set.
# allkeys-lru -> Evict any key using approximated LRU.
# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
# allkeys-lfu -> Evict any key using approximated LFU.
# volatile-random -> Remove a random key among the ones with an expire set.
# allkeys-random -> Remove a random key, any key.
# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
# noeviction -> Don't evict anything, just return an error on write operations.
# 默认不清理,而是内存满了之后再去写操作会返回错误
# maxmemory-policy noeviction
# LRU, LFU和最小TTL算法不是精确算法,而是近似算法(为了节省内存),所以你可以调整它的速度或准确性。默认情况下Redis会检查5个键,并选择最近使用较少的一个,你可以使用以下配置指令改变样本大小。
# 默认的5产生足够好的结果。10非常接近真实LRU,但花费更多CPU。3更快,但不是很准确。
# maxmemory-samples 5
# 从Redis 5开始,默认情况下副本将忽略其maxmemory设置(除非在故障转移或手动后提升为master)。这意味着内存回收将只由主服务器处理,将DEL命令发送到副本上执行内存清理。
# 该配置是为了保持数据一致,但是如果副本是可写的,或者想要复制不同的内存设置,需要确定执行写入副本的操作是幂等的,可以改变这个默认的配置(但一定要了解自己在做什么)。
# 注意,因为在默认情况下,副本不删除,可能会比主节点使用更多的内存,因此,需要确保副节点有足够的内存空间。
# replica-ignore-maxmemory yes
############################# LAZY FREEING ####################################
# Redis有两个原语来删除键。一个叫做DEL,是对象的阻塞删除。这意味着服务器停止处理新命令,以同步方式回收与对象关联的所有内存。如果删除的键与一个小对象相关联,那么执行DEL命令所需的时间非常小,与Redis中大多数其他O(1)或O(log_N)命令相当。但是,如果该键与包含数百万个元素的聚合值相关联,服务器可能会阻塞很长时间(甚至几秒钟)以完成操作。
# 基于上述原因,Redis也提供了非阻塞删除原语,如UNLINK(非阻塞DEL)和ASYNC选项的FLUSHALL和FLUSHDB命令,以便在后台回收内存。这些命令在固定的时间内执行。另一个线程将尽可能快地递增地释放后台的对象。
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
############################## APPEND ONLY MODE ###############################
# 默认情况下Redis异步转储数据到磁盘上。但是Redis进程的问题或停电可能会导致几分钟的写丢失(取决于配置的保存点)。
# 仅追加文件是另一种持久性模式,它提供了更好的持久性。例如使用默认数据fsync策略,可以失去只是一秒的写数据。
# AOF和RDB持久化可以同时启用。
# 如果AOF在启动时启用,Redis会加载AOF。
appendonly no
# AOF文件的名称(默认:"appendonly.aof")
appendfilename "appendonly.aof"
# AOF同步策略,三种:
# no: 不自动同步,让操作系统在需要的时候刷新数据。
# always: 每次写操作之后都追加日志。
# everysec: 每秒同步一次
# appendfsync always
appendfsync everysec
# appendfsync no
# 当AOF fsync策略设置为always或everysec,后台保存进程(后台保存或AOF log后台重写)对磁盘执行大量I/O操作时,在某些Linux配置中,Redis可能会在fsync()调用时阻塞过长时间。注意,目前还没有解决这个问题的方法,因为即使在不同的线程中执行fsync也会阻塞同步写(2)调用。
# 为了缓解这个问题,可以使用以下选项来防止fsync()在主进程中被调用,而BGSAVE或BGREWRITEAOF正在进行中。
# 这意味着当另一个子节点正在保存时,Redis的持久性与“appendfsync none”相同。在实践中,这意味着在最坏的情况下(使用默认的Linux设置),可能会丢失多达30秒的日志。
# 如果不能忍受延迟问题,把这个改为“是”。否则就保留“no”,从耐久性的角度来看,这是最安全的选择。
no-appendfsync-on-rewrite no
#自动重写AOF文件。
# Redis能够自动重写日志文件隐式调用BGREWRITEAOF当AOF日志大小增长指定的百分比。
#它是这样工作的:Redis会记住最近一次重写后的AOF文件的大小(如果自重启后没有重写,则使用启动时的AOF文件的大小)。
#此基础大小与当前大小进行比较。如果当前大小大于指定的百分比,则触发重写。您还需要为要重写的AOF文件指定一个最小大小,这对于避免重写AOF文件是有用的,即使已经达到了百分比的增长,但它仍然非常小。
#指定为0,以禁用自动AOF重写功能。
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 在Redis启动过程中,当AOF数据被加载回内存时,可能会发现AOF文件在最后被截断。
# 这可能发生在Redis运行系统崩溃时,特别是当ext4文件系统挂载没有data=ordered选项。
# 如果AOF文件在最后发现被截断。下面的选项控制这种行为。
# 设置为yes,一个被截断的AOF文件被加载,Redis服务器开始发送日志通知用户事件。
# 设置为no,服务器将以错误中止并拒绝启动。当选项设置为no时,用户需要在重新启动服务器之前使用“redis-check-aof”实用程序修复AOF文件。
#注意,如果AOF文件被发现在中间损坏,仍然会退出并出现错误。此选项仅适用于Redis将试图从AOF文件读取加载更多数据时。
aof-load-truncated yes
# 当重写AOF文件时,Redis可以在AOF文件中使用RDB前缀,以便更快地重写和恢复。当打开这个选项时,重写的AOF文件由两个不同的节组成:
# [RDB file][AOF tail]
# 当加载Redis时识别到AOF文件以“Redis”字符串开始,在加载带前缀的RDB文件后继续加载AOF尾部。
aof-use-rdb-preamble yes
################################ LUA SCRIPTING ###############################
# Lua脚本的最大执行时间(毫秒)
lua-time-limit 5000
################################ REDIS CLUSTER ###############################
# 是否启用集群支持
# cluster-enabled yes
# 集群配置文件
# cluster-config-file nodes-6379.conf
# 集群节点超时:指的是一个节点处于故障状态时,连接超时的毫秒数。
# cluster-node-timeout 15000
# 故障转移
# 1)如果有多个副本可以进行故障转移,它们会交换消息,以尝试为具有最佳复制偏移量的副本提供。副本将尝试通过偏移量获得它们的级别,并在故障转移开始时应用与它们的级别成比例的延迟。
# 2)每个副本计算与它的主服务器最后一次交互的时间。这可以是接收到的最后一个ping或命令(如果主服务器仍处于“connected”状态),也可以是与主服务器断开连接后经过的时间(如果复制链接当前关闭)。如果最后的交互数据太旧,将不会尝试故障转移。
# 如果节点超时是30秒,副本有效性因子是10,假设默认的复制复制周期是10秒,如果不能与主服务器对话超过10秒,副本将不会尝试故障转移。
# 如果将replica- validation -factor设置为0,这意味着副本总是会尝试故障转移为主节点,而不管它们最后一次与主服务器交互的时间是什么。
# cluster-replica-validity-factor 10
# 故障转移时的副本数:
# 只有当副节点数大于等于该值时,才会进行故障转移,1意味着只有在主节点至少有1个副本时,才会进行故障转移,依此类推。
# cluster-migration-barrier 1
# 如果集群部分宕机(例如一段哈希槽不可用),所有的集群最终将不可用。
# 有时希望集群继续可用。只需将cluster- requirements -full-coverage选项设置为no。
# cluster-require-full-coverage yes
# 当设置为yes时,阻止副本在主节点挂了时进行故障转移。不过仍然可以执行手动故障转移。
# cluster-replica-no-failover no
########################## CLUSTER DOCKER/NAT support ########################
# 在某些部署中,Redis集群节点的地址发现失败,因为地址nat或端口被转发(例如Docker和其他容器)。
# 为了使Redis集群在这样的环境下工作,需要一个静态配置,其中每个节点都知道自己的公网地址。
# Example:
# cluster-announce-ip 10.1.1.5
# cluster-announce-port 6379
# cluster-announce-bus-port 6380
################################## SLOW LOG ###################################
# Redis慢日志是一个系统记录查询超过指定的执行时间。执行时间不包括I / O操作,比如与客户端,发送应答等等,仅是实际执行命令所需的时间。
# 可以配置慢日志有两个参数:一个告诉Redis命令记录的执行时间超过多少(以微秒为单位),另一个参数是慢日志的长度。当记录一个新命令时,旧命令将从记录的命令队列中删除。
# 下面的时间用微秒表示,所以1000000等于一秒。注意,负数禁用慢日志,而0则强制记录每个命令。
slowlog-log-slower-than 10000
# 这个长度没有限制。只是要注意它会消耗内存。可以通过SLOWLOG重置来回收慢日志使用的内存。
slowlog-max-len 128
################################ LATENCY MONITOR ##############################
# 系统记录时间等于或大于通过延迟监控阈值配置指令指定的毫秒数的操作。当其值设置为0时,将关闭延时监视器。
latency-monitor-threshold 0
############################# EVENT NOTIFICATION ##############################
# Redis可以通知Pub/Sub 客户端在键空间发生的事件。
notify-keyspace-events ""
############################### ADVANCED CONFIG ###############################
# 哈希编码使用内存高效的数据结构,当有少量的条目,并且最大的条目不超过给定的阈值。可以使用以下指令配置这些阈值。
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
#列表也以一种特殊的方式进行编码,以节省大量空间。
# 每个内部列表节点允许的条目数可以指定为一个固定的最大大小或最大元素数量。
# 对于一个固定的最大大小,使用-5到-1,意思是:
# -5:最大大小:64kb <——不建议用于正常工作负载
# -4:最大大小:32 Kb <——不推荐
# -3:最大大小:16 Kb <——可能不推荐
# -2:最大大小:8kb <-好
# -1:最大大小:4 Kb <——好
# 正数意味着每个列表节点存储的元素数正好等于这个值。
# 最高的执行选项通常是-2 (8 Kb大小)或-1 (4 Kb大小),
# 但如果你的用例是唯一的,根据需要调整设置。
list-max-ziplist-size -2
# 列表也可以被压缩。
# 0: disable all list compression 禁用所有列表压缩
# 1: depth 1 means "don't start compressing until after 1 node into the list, going from either the head or tail"
# So: [head]->node->node->...->node->[tail] [head], [tail] will always be uncompressed; inner nodes will compress.
# 不要开始压缩,直到1个节点进入列表
# 2: [head]->[next]->node->node->...->node->[prev]->[tail] 2 here means: don't compress head or head->next or tail->prev or tail, but compress all nodes between them.
# 压缩它们之间的所有节点
# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail] etc.
list-compress-depth 0
# 集合在一种情况下有一个特殊的编码:当一个集合由以10为基数的64位带符号整数范围内的字符串组成时。
为了使用这种特殊的内存保存编码,下面的配置设置设置了set大小的限制。
set-max-intset-entries 512
# 与散列和列表类似,为了节省大量空间,排序集也被特别编码。这种编码仅在排序后的集合的长度和元素低于以下限制时使用:
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
# HyperLogLog 表示字节限制。这个限制包括16字节的报头。当使用表示的HyperLogLog超过这个极限时,它就被转换为密集表示。
# 大于16000的值是完全无用的,因为在这一点上密集表示的内存效率更高。
# 建议的值为0 ~ 3000,以达到空间高效编码的好处,同时又不会减慢太多的PFADD, PFADD是O(N)与散列编码。如果不考虑CPU,但考虑空间,并且数据集由许多hyperloglog组成,基数在0 - 15000之间,则该值可以提高到 0 ~ 10000。
hll-sparse-max-bytes 3000
# Streams macro 节点最大size / items.
# 流数据结构是一个大节点的基数树,其中编码了多个项。使用此配置,可以配置单个节点的字节数,以及在添加新流条目时切换到新节点之前,节点可能包含的最大项数。如果下列任何一个设置被设置为0,则该限制将被忽略,因此,可以通过将max-bytes设置为0,将max-entries设置为所需的值来设置max entires限制。
stream-node-max-bytes 4096
stream-node-max-entries 100
# 想尽快释放内存,请使用“activerehashing yes”。
activerehashing yes
# 客户端输出缓冲区限制可以用于强制客户端断开连接,因为某些原因没有足够快地从服务器读取数据(一个常见的原因是发布/订阅客户端消费消息的速度没有发布端产生消息的速度快)。
# 设置为0表示禁用
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
# 客户端查询缓冲区积累新命令。默认情况下,它们被限制在一个固定的数量,以避免协议去同步将导致查询缓冲区中未绑定的内存使用。然而,如果你有非常特殊的需求,例如巨大的multi/exec请求或类似的,你可以在这里配置它。
# client-query-buffer-limit 1gb
# 在Redis协议中,批量请求,也就是单个字符串的元素,通常被限制在512mb。但是你可以在这里改变这个限制。
# proto-max-bulk-len 512mb
# Redis调用内部函数来执行很多后台任务,比如在超时时关闭客户端连接,清除过期的从未被请求的键,等等。
#并不是所有的任务都以相同的频率执行,但是Redis根据指定的“hz”值检查任务执行。
#默认“hz”设置为10。提高这个值会在Redis空闲的时候占用更多的CPU,但同时也会让Redis在有很多键同时过期的时候更有响应能力,并且可以更精确的处理超时。
#范围在1到500之间,但是超过100的值通常不建议。大多数用户应该使用默认值10,只有在需要很低延迟的环境中才将其提高到100。
hz 10
# 通常,HZ值与连接的客户端数量成比例是有用的。这是很有用的,例如,为了避免每次后台任务调用都要处理太多的客户端,从而避免延迟峰值。
#由于默认的HZ值被保守地设置为10,Redis提供并启用了默认的使用自适应HZ值的能力,当有许多连接的客户端时,这个值将临时提高。
#当启用动态HZ时,实际配置的HZ将被用作基线,但一旦更多的客户端连接,实际使用的配置HZ值的倍数将根据需要。通过这种方式,空闲的实例将使用很少的CPU时间,而忙碌的实例将响应更快。
dynamic-hz yes
# 当一个子进程重写AOF文件时,如果下面的选项被启用,这个文件将每32 MB的数据被fsync。这对于以增量的方式将文件提交到磁盘并避免较大的延迟。
aof-rewrite-incremental-fsync yes
# 当redis保存RDB文件时,如果启用以下选项,该文件将每32mb的数据生成fsync-ed。这对于以增量的方式将文件提交到磁盘并避免较大的延迟。
rdb-save-incremental-fsync yes
# LFU配置
# lfu-log-factor 10
# lfu-decay-time 1
########################### ACTIVE DEFRAGMENTATION #######################
# 主动碎片整理
# activedefrag yes
# 启动活动碎片整理所需的最小碎片量
# active-defrag-ignore-bytes 100mb
# 启动活动碎片整理所需的最小碎片百分比
# active-defrag-threshold-lower 10
# 启动活动碎片整理所需的最大碎片百分比
# active-defrag-threshold-upper 100
# 用于磁盘碎片整理的最小CPU百分比
# active-defrag-cycle-min 5
# 用于磁盘碎片整理的最大CPU百分比
# active-defrag-cycle-max 75
# 从主字典扫描中处理的set/hash/zset/list字段的最大数目
# active-defrag-max-scan-fields 1000