redis5.0参数详解

官网: 原文

#Redis 配置文件示例。

#注意,为了读取配置文件,Redis 必须是
#以文件路径作为第一个参数开始:

#./redis-server /path/to/redis.conf

#单位注意事项:当需要内存大小时,可以指定
#它以通常的形式 1k 5GB 4M 等等:

#1k => 1000 字节
#1kb => 1024 字节
#1m => 1000000 字节
#1mb => 10241024 字节
#1g => 1000000000 字节
#1GB => 1024
1024*1024 字节

#单位不区分大小写,因此 1GB 1Gb 1gB 都是一样的。

#################################包括###################################

#在此处包含一个或多个其他配置文件。这很有用,如果你
#有一个标准模板去所有 Redis 服务器,但也需要
#自定义一些每个服务器的设置。包含文件可以包含
#其他文件,所以明智地使用它。

#注意选项“include”不会被命令“CONFIG REWRITE”重写
#来自管理员或 Redis Sentinel。由于 Redis 总是使用最后处理的
#行作为配置指令的值,你最好把包含
#在此文件的开头以避免在运行时覆盖配置更改。

#如果您有兴趣使用包含来覆盖配置
#选项,最好使用 include 作为最后一行。

#包括 /path/to/local.conf
#包括 /path/to/other.conf

################################模块#####################################

#在启动时加载模块。如果服务器无法加载模块
#它将中止。可以使用多个 loadmodule 指令。

#加载模块 /path/to/my_module.so
#加载模块 /path/to/other_module.so

################################## 网络 ############### ######################

#默认情况下,如果没有指定“bind”配置指令,Redis 会监听
#用于来自服务器上所有可用网络接口的连接。
#可以使用监听一个或多个选定的接口
#“bind” 配置指令,后跟一个或多个 IP 地址。

# 例子:

#绑定 192.168.1.100 10.0.0.1
#绑定 127.0.0.1 ::1

#~~~ WARNING ~~~ 如果运行 Redis 的电脑直接暴露在
#internet,绑定到所有接口是危险的,并且会暴露
#实例给互联网上的每个人。所以默认情况下我们取消注释
#跟随绑定指令,这将强制 Redis 只监听
#IPv4 环回接口地址(这意味着 Redis 将能够
#只接受来自运行在同一台计算机上的客户端的连接
# 在跑)。

#如果你确定你想让你的实例监听所有的接口
#只需评论以下行。
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
绑定 127.0.0.1

#保护模式是一层安全保护,为了避免这种情况
#在互联网上打开的 Redis 实例被访问和利用。

#当保护模式开启并且如果:

#1) 服务器没有使用
#“绑定”指令。
#2) 没有配置密码。

#服务器只接受来自客户端的连接
#IPv4 和 IPv6 环回地址 127.0.0.1 和 ::1,来自 Unix 域
#插座。

#默认情况下启用保护模式。仅在以下情况下才应禁用它
#你确定你想让其他主机的客户端连接到 Redis
#即使没有配置身份验证,也没有配置特定的接口集
#使用“绑定”指令显式列出。
保护模式是

#接受指定端口上的连接,默认为 6379 (IANA #815344)。
#如果指定端口 0,Redis 将不会监听 TCP 套接字。
端口 6379

#TCP 侦听()积压。

#在每秒请求数较高的环境中,您需要大量积压工作
#避免缓慢的客户端连接问题。请注意,Linux 内核
#会默默地将它截断为 /proc/sys/net/core/somaxconn 的值所以
#确保同时提高 somaxconn 和 tcp_max_syn_backlog 的值
#为了得到想要的效果。
tcp 积压 511

#Unix 套接字。

#指定用于监听的 Unix 套接字的路径
#传入连接。没有默认,所以Redis不会监听
#未指定时在 unix 套接字上。

#unixsocket /tmp/redis.sock
#unixsocketperm 700

#客户端空闲N秒后关闭连接(0为禁用)
超时 0

#TCP 保活。

#如果非零,使用 SO_KEEPALIVE 发送 TCP ACKs 到客户端不在
#沟通。这很有用,原因有两个:

#1) 检测死节点。
#2) 从网络的角度取连接存活
#设备在中间。

#在 Linux 上,指定的值(以秒为单位)是用于发送 ACK 的周期。
#注意关闭连接需要双倍的时间。
#在其他内核上,周期取决于内核配置。

#此选项的合理值是 300 秒,这是新的
#Redis 默认从 Redis 3.2.1 开始。
tcp-keepalive 300

################################# 一般的 ################ #####################

#默认情况下,Redis 不作为守护进程运行。如果需要,请使用“是”。
#注意Redis在守护进程时会在/var/run/redis.pid中写入一个pid文件。
守护进程没有

#如果你从 upstart 或 systemd 运行 Redis,Redis 可以与你的交互
#监督树。选项:
#无监督 - 无监督交互
#监督新贵 - 通过将 Redis 置于 SIGSTOP 模式来发出新贵信号
#受监督的 systemd - 通过将 READY=1 写入 $NOTIFY_SOCKET 向 systemd 发出信号
#监督式自动检测暴发户或基于 systemd 的方法
#UPSTART_JOB 或 NOTIFY_SOCKET 环境变量
#注意:这些监督方法只发出“进程准备就绪”的信号。
#他们不会让你的主管连续活跃 ping。
没有监督

#如果指定了 pid 文件,Redis 会在启动时将其写入指定位置
#并在退出时将其删除。

#当服务器运行非守护进程时,如果没有,则不创建pid文件
#在配置中指定。当服务器被守护进程时,pid 文件
#即使未指定也会使用,默认为“/var/run/redis.pid”。

#创建一个 pid 文件是最好的努力:如果 Redis 无法创建它
#没有什么不好的事情发生,服务器将正常启动并运行。
pidfile /var/run/redis_6379.pid

#指定服务器详细级别。
#这可以是以下之一:
#debug(大量信息,对开发/测试有用)
#详细(许多很少有用的信息,但不像调试级别那样混乱)
#注意(适度冗长,可能是你想要的生产环境)
#警告(只记录非常重要/关键的消息)
日志级别通知

#指定日志文件名。空字符串也可以用来强制
#Redis 登录标准输出。请注意,如果您使用标准
#日志输出但守护进程,日志将被发送到 /dev/null
日志文件“”

#要启用系统记录器的日志记录,只需将 ‘syslog-enabled’ 设置为 yes,
#并可选择更新其他系统日志参数以满足您的需要。
#启用 syslog 否

#指定系统日志标识。
#syslog-ident redis

#指定系统日志设施。必须是 USER 或介于 LOCAL0-LOCAL7 之间。
#系统日志设施 local0

#设置数据库数量。默认数据库为 DB 0,可以选择
#使用 SELECT 在每个连接的基础上使用不同的
#dbid 是一个介于 0 和 ‘databases’-1 之间的数字
数据库 16

#默认情况下,Redis 仅在开始登录时显示 ASCII 艺术徽标
#标准输出,如果标准输出是 TTY。基本上这意味着
#通常一个标志只在交互式会话中显示。

#但是,可以强制执行 4.0 之前的行为并始终显示
#通过将以下选项设置为是,启动日志中的 ASCII 艺术徽标。
始终显示徽标是的

###############################快照################################

#将数据库保存在磁盘上:

#保存 <秒> <更改>

#如果给定的秒数和给定的秒数都将保存数据库
#发生了对 DB 的写入操作数。

#在下面的示例中,行为将是保存:
#900 秒(15 分钟)后,如果至少 1 个键发生了变化
#300 秒(5 分钟)后,如果至少有 10 个键被更改
#如果至少有 10000 个键被更改,则在 60 秒后

#注意:您可以通过注释掉所有“保存”行来完全禁用保存。

#也可以把之前配置的save全部去掉
#通过添加带有单个空字符串参数的保存指令来获得积分
#就像下面的例子:

# 节省 ””

节省 900 1
节省 300 10
节省 60 10000

#默认情况下,如果启用 RDB 快照,Redis 将停止接受写入
#(至少一个保存点)且最近一次后台保存失败。
#这将使用户(以一种艰难的方式)意识到数据没有持久化
#正确保存在磁盘上,否则很可能没有人会注意到
#灾难会发生。

#如果后台保存进程将重新开始工作,Redis 将
#自动允许再次写入。

#但是,如果您已经设置了对 Redis 服务器的适当监控
#和持久性,你可能想禁用这个功能,这样 Redis 就会
#即使磁盘出现问题,也继续照常工作,
#权限等等。
停止写入 bgsave 错误是

#转储.rdb 数据库时使用LZF 压缩字符串对象?
#默认设置为“是”,因为它几乎总是胜利。
#如果你想在saving child中节省一些CPU,请将其设置为’no’但是
#如果你有可压缩的值或键,数据集可能会更大。
rdbcompression 是

#从 RDB 版本 5 开始,CRC64 校验和被放置在文件的末尾。
#这使得格式更能抵抗损坏但有一个性能
#保存和加载 RDB 文件时点击付费(大约 10%),所以你可以禁用它
#以获得最佳性能。

#在禁用校验和的情况下创建的 RDB 文件的校验和为零,这将
#告诉加载代码跳过检查。
rdbchecksum 是

#转储数据库的文件名
dbfilename dump.rdb

#工作目录。

#数据库将写入此目录,指定文件名
#上面使用 ‘dbfilename’ 配置指令。

#Append Only File 也将在此目录中创建。

#注意这里必须指定目录,而不是文件名。
目录./

################################复制#################################

#主副本复制。使用 replicaof 使 Redis 实例成为
#另一个 Redis 服务器。关于 Redis 复制的一些事情要尽快理解。

#±-----------------+ ±-------------+
#| 硕士 | —> | 复制品 |
#| (接收写入)| | (精确副本)|
#±-----------------+ ±-------------+

#1) Redis复制是异步的,但是你可以配置一个master
#如果看起来至少没有连接,则停止接受写入
#给定数量的副本。
#2) Redis 副本能够与
#master 如果复制链接丢失相对较少的时间
# 时间。您可能需要配置复制积压大小(请参阅下一个
#此文件的部分)具有合理的值,具体取决于您的需要。
#3) 复制是自动的,不需要用户干预。之后
#网络分区副本自动尝试重新连接到主服务器
#并与他们重新同步。

#replicaof

#如果主服务器受密码保护(使用“requirepass”配置
#指令下面)可以告诉副本在之前进行身份验证
#启动复制同步过程,否则master会
#拒绝副本请求。

#masterauth <主密码>

#当一个副本失去与主节点的连接时,或者当复制
#仍在进行中,副本可以以两种不同的方式运行:

#1) 如果replica-serve-stale-data 设置为’yes’(默认值),副本将
#仍然回复客户端请求,可能带有过期数据,或者
#如果这是第一次同步,数据集可能只是空的。

#2) 如果replica-serve-stale-data 设置为’no’,副本将回复
#所有类型的命令都会出现错误“SYNC with master in progress”
#但对于 INFO、replicaOF、AUTH、PING、SHUTDOWN、REPLCONF、ROLE、CONFIG、
#订阅,取消订阅,PSUBSCRIBE,PUNSUBSCRIBE,PUBLISH,PUBSUB,
#命令、发布、主机:和延迟。

副本服务陈旧数据是

#您可以配置副本实例以接受或不接受写入。写反对
#一个副本实例可能对存储一些临时数据有用(因为数据
#在副本上写入的内容在与主副本重新同步后很容易被删除)但是
#如果客户端写信给它,也可能导致问题
#配置错误。

#由于 Redis 2.6 默认副本是只读的。

#注意:只读副本不设计为暴露给不受信任的客户端
# 在网上。它只是防止滥用实例的保护层。
#仍然是只读副本,默认导出所有管理命令
#如 CONFIG、DEBUG 等。在有限的范围内你可以改进
#使用’rename-command’来隐藏所有只读副本的安全性
#管理/危险命令。
副本只读 是

#复制同步策略:磁盘或套接字。

#------------------------------------------------ ------
#警告:无盘复制目前是实验性的
#------------------------------------------------ ------

#新副本和重新连接无法继续复制的副本
#进程只是接收差异,需要做所谓的“完整
#同步”。一个 RDB 文件从主服务器传输到副本。
#传输可以通过两种不同的方式发生:

#1) Disk-backed:Redis master创建一个新的进程来写入RDB
#磁盘上的文件。稍后文件由父级传输
#以增量方式处理副本。
#2) 无盘:Redis master 创建一个新进程,直接写入
#RDB 文件复制到套接字,完全不接触磁盘。

#使用磁盘备份复制,在生成 RDB 文件的同时,更多的副本
#可以在当前子节点生成后立即与 RDB 文件一起排队和服务
#RDB 文件完成它的工作。用无盘复制代替一次
#传输开始,新到达的副本将排队,新的传输
#将在当前结束时开始。

#当使用无盘复制时,master 等待一个可配置数量的
#开始传输之前的时间(以秒为单位),希望多个副本
#将到达并且可以并行传输。

#使用慢速磁盘和快速(大带宽)网络,无盘复制
#效果更好。
repl-diskless-sync 否

#开启无盘复制时,可以配置延迟
#服务器等待以产生通过套接字传输 RDB 的子节点
#复制到副本。

#这很重要,因为一旦转移开始,就无法提供服务
#新副本到达,将排队等待下一次 RDB 传输,因此服务器
#等待延迟以让更多副本到达。

#延迟以秒为单位,默认为5秒。禁用
#它完全只是将其设置为 0 秒,传输将尽快开始。
无盘同步延迟 5

#副本以预定义的时间间隔向服务器发送 PING。有可能改变
#这个间隔使用 repl_ping_replica_period 选项。默认值为 10
#秒。

#repl-ping-replica-period 10

#以下选项设置复制超时:

#1) 从副本的角度来看,SYNC 期间的批量传输 I/O。
#2) 从副本(数据、pings)的角度来看,master 超时。
#3) 从主节点的角度来看副本超时(REPLCONF ACK pings)。

#确保该值大于该值很重要
#为 repl-ping-replica-period 指定,否则将检测到超时
#每次master和replica之间流量低的时候。

#重新超时 60

#SYNC 后在副本套接字上禁用 TCP_NODELAY?

#如果选择“yes”,Redis 将使用较少数量的 TCP 数据包,并且
#将数据发送到副本的带宽更少。但这可能会增加延迟
#出现在副本端的数据,最长 40 毫秒
#Linux 内核使用默认配置。

#如果选择“否”,则数据出现在副本端的延迟将
#减少但更多带宽将用于复制。

#默认情况下,我们优化低延迟,但在非常高的流量条件下
#或者当主节点和副本节点相距很多跳时,将其设置为“是”可能
#是个好主意。
repl-disable-tcp-nodelay 否

#设置复制积压大小。积压是一个积累的缓冲区
#副本断开一段时间后的副本数据,这样当一个副本
#想要重新连接,通常不需要完全重新同步,而是部分重新同步
#重新同步就足够了,只需传递副本丢失的数据部分
#断开连接。

#复制积压越大,复制的时间越长
#断开连接,稍后可以执行部分​​重新同步。

#仅当至少有一个副本连接时才分配积压。

#repl-backlog-size 1mb

#当一个master一段时间没有再连接replica后,backlog
#将被释放。以下选项配置秒数
#需要经过,从最后一个副本断开连接的时间开始,对于
#要释放的积压缓冲区。

#请注意,副本永远不会因超时而释放积压,因为它们可能是
#后期晋升大师,应该可以正确“部分”
#重新同步”与副本:因此他们应该总是积累积压。

#值为 0 表示从不释放 backlog。

#repl-backlog-ttl 3600

#副本优先级是 Redis 在 INFO 输出中发布的整数。
#Redis Sentinel 使用它来选择要提升为副本的副本
#master 如果 master 不再正常工作。

#优先级低的副本被认为更适合提升,所以
#例如,如果有 3 个优先级为 10、100、25 的副本,Sentinel 将
#选择优先级为 10 的,即最低的。

#但是,特殊优先级 0 将副本标记为无法执行
#master 的角色,所以优先级为 0 的副本永远不会被选择
#Redis Sentinel 进行推广。

#默认优先级为100。
副本优先级 100

#如果少于
#N 个连接的副本,延迟小于或等于 M 秒。

#N 个副本需要处于“在线”状态。

#以秒为单位的延迟,必须是 <= 指定的值,由以下计算得出
#从副本收到的最后一个 ping,通常每秒发送一次。

#此选项不保证 N 个副本将接受写入,但
#如果没有足够的副本,将限制丢失写入的暴露窗口
#可用,到指定的秒数。

#例如,需要至少 3 个延迟 <= 10 秒的副本,请使用:

#min-replicas-to-write 3
#min-replicas-max-lag 10

#将其中一个或另一个设置为 0 会禁用该功能。

#默认情况下 min-replicas-to-write 设置为 0(禁用功能)和
#min-replicas-max-lag 设置为 10。

#Redis master 能够列出连接的地址和端口
#以不同方式复制。例如“信息复制”部分
#提供此信息,除其他工具外,由以下人员使用
#Redis Sentinel 以发现副本实例。
#这个信息可用的另一个地方是
#“ROLE”命令的主人。

#获取replica正常上报的列出的IP和地址
#通过以下方式:

#IP:通过检查对等地址自动检测地址
#副本用于连接主服务器的套接字。

#端口:复制过程中副本通信的端口
#握手,通常是副本使用的端口
#监听连接。

#但是当端口转发或网络地址转换 (NAT) 是
#使用,副本实际上可以通过不同的 IP 和端口访问
#对。副本可以使用以下两个选项,以便
#向其主控报告一组特定的 IP 和端口,以便 INFO
#和 ROLE 将报告这些值。

#如果只需要覆盖,则无需同时使用这两个选项
#端口或IP地址。

#副本公告 IP 5.5.5.5
#副本公告端口 1234

################################## 安全 ############### ####################

#要求客户端在处理任何其他请求之前发出 AUTH
#命令。这在您不信任的环境中可能很有用
#其他有权访问运行 redis-server 的主机的人。

#这应该保持注释掉以实现向后兼容性,因为大多数
#人们不需要身份验证(例如,他们运行自己的服务器)。

#警告:由于 Redis 非常快,外部用户可以尝试
#每秒 150k 个密码对一个好盒子。这意味着你应该
#使用非常强大的密码,否则很容易被破解。

#requirepass foobared

#命令重命名。

#可以更改共享中危险命令的名称
# 环境。例如 CONFIG 命令可能被重命名为
#难以猜测,因此它仍然可用于内部使用的工具
#但不适用于一般客户。

# 例子:

#重命名命令配置 b840fc02d524045429941cc15f59e41cb7be6c52

#也可以通过将命令重命名为完全终止命令
#一个空字符串:

#重命名命令配置“”

#请注意更改登录到的命令的名称
#AOF 文件或传输到副本可能会导致问题。

#################################客户####################################

#设置同时连接的最大客户端数。默认
#此限制设置为 10000 个客户端,但是如果 Redis 服务器不是
#能够配置进程文件限制以允许指定的限制
#允许客户端的最大数量设置为当前文件限制
#减去 32(因为 Redis 保留了一些文件描述符供内部使用)。

#一旦达到限制,Redis 将关闭所有发送的新连接
#错误“已达到最大客户端数”。

#最大客户数 10000

############################## 内存管理 ################## ##############

#将内存使用限制设置为指定的字节数。
#当达到内存限制时,Redis 将尝试删除键
#根据选择的驱逐策略(见 maxmemory-policy)。

#如果 Redis 不能根据策略删除键,或者如果策略是
#设置为 ‘noeviction’,Redis 将开始以错误回复命令
#这将使用更多内存,如 SET、LPUSH 等,并将继续
#回复只读命令,如 GET。

#当使用 Redis 作为 LRU 或 LFU 缓存时,此选项通常很有用,或者
#为实例设置硬内存限制(使用“noeviction”策略)。

#警告:如果您将副本附加到启用了 maxmemory 的实例,
#减去提供副本所需的输出缓冲区的大小
#从已用内存计数中,以便网络问题/重新同步将
#不触发键被驱逐的循环,并依次输出
#副本缓冲区已满,键的 DEL 被驱逐触发删除
#多个键,依此类推,直到数据库完全清空。

#简而言之…如果您附加了副本,建议您设置一个较低的
#maxmemory 的限制,以便系统上有一些空闲 RAM 用于副本
#输出缓冲区(但如果策略是“noeviction”,则不需要这样做)。

#最大内存 <字节>

#MAXMEMORY POLICY:当达到最大内存时,Redis 将如何选择要删除的内容
# 到达了。您可以在五种行为中进行选择:

#volatile-lru -> 在设置了过期时间的键中使用近似的 LRU 驱逐。
#allkeys-lru -> 使用近似的 LRU 驱逐任何密钥。
#volatile-lfu -> 在设置过期的键中使用近似 LFU 驱逐。
#allkeys-lfu -> 使用近似 LFU 驱逐任何密钥。
#volatile-random -> 在设置了过期的密钥中删除一个随机密钥。
#allkeys-random -> 删除随机密钥,任意密钥。
#volatile-ttl -> 移除过期时间最近的key(次要TTL)
#noeviction -> 不要驱逐任何东西,只在写操作时返回一个错误。

#LRU 表示最近最少使用
#LFU 表示最不常用

#LRU、LFU 和 volatile-ttl 都是使用近似值实现的
#随机算法。

#注意:使用上述任何一种策略,Redis 都会在写入时返回错误
#操作,当没有合适的键用于驱逐时。

#在编写这些命令的日期是: set setnx setex append
#incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
#sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
#zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
#getset mset msetnx exec 排序

#默认为:

#maxmemory-policy noeviction

#LRU、LFU 和最小 TTL 算法不是精确算法,而是近似的
#算法(为了节省内存),所以你可以调整它的速度或
# 准确性。对于默认 Redis 将检查五个键并选择一个
#最近很少使用,您可以使用以下方法更改样本大小
#配置指令。

#默认值 5 会产生足够好的结果。10 非常接近
#真正的 LRU,但需要更多的 CPU。3更快但不是很准确。

#maxmemory-samples 5

#从 Redis 5 开始,默认情况下,副本将忽略其 maxmemory 设置
#(除非它在故障转移后或手动提升为主)。它的意思是
#key 的驱逐将由 master 处理,发送
#DEL 命令到副本作为主端驱逐的键。

#这种行为保证了masters和replica保持一致,并且通常是
#你想要什么,但是如果你的副本是可写的,或者你希望副本有
#一个不同的内存设置,你确定所有的写入都执行到
#副本是幂等的,那么你可以改变这个默认值(但一定要明白
# 你在做什么)。

#注意,由于replica默认不驱逐,可能会使用更多
#内存比通过 maxmemory 设置的一组内存(有某些缓冲区可能
#在副本上更大,或者数据结构有时可能会占用更多内存等
# 向前)。因此,请确保您监控您的副本并确保它们有足够的
#在主节点命中之前,内存永远不会遇到真正的内存不足情况
#配置的最大内存设置。

#副本忽略最大内存是的

############################懒散####################################

#Redis 有两个删除键的原语。一个叫做 DEL,是一个阻塞
#删除对象。这意味着服务器停止处理新命令
#为了在同步中回收与对象关联的所有内存
# 方法。如果删除的键与一个小对象相关联,则需要的时间
#为了执行 DEL 命令非常小并且与大多数其他命令相当
#Redis 中的 O(1) 或 O(log_N) 命令。但是,如果密钥与
#包含数百万个元素的聚合值,服务器可以阻止
#很长一段时间(甚至几秒钟)才能完成操作。

#由于上述原因,Redis 还提供了非阻塞删除原语
#如UNLINK(非阻塞DEL)和FLUSHALL的ASYNC选项和
#FLUSHDB 命令,以便在后台回收内存。那些命令
#在恒定时间内执行。另一个线程将逐步释放
#尽可能快地在后台对象。

#FLUSHALL 和 FLUSHDB 的 DEL、UNLINK 和 ASYNC 选项是用户控制的。
#由应用程序的设计来理解什么时候是好的
#使用其中一个的想法。然而,Redis 服务器有时必须
#删除键或刷新整个数据库作为其他操作的副作用。
#具体来说,Redis 独立于用户调用删除对象
#以下场景:

#1) 在驱逐时,由于 maxmemory 和 maxmemory 策略配置,
#为了给新数据腾出空间,不超过指定的
#内存限制。
#2) 因为过期:当一个键具有关联的生存时间时(参见
#EXPIRE 命令)必须从内存中删除。
#3) 因为在键上存储数据的命令的副作用可能
# 已经存在。例如 RENAME 命令可能会删除旧密钥
#替换为另一个内容时的内容。同样的 SUNIONSTORE
#或带有 STORE 选项的 SORT 可能会删除现有的键。SET 命令
#本身删除指定键的任何旧内容以替换
#它与指定的字符串。
#4) 在复制期间,当一个副本与
#它的主人,整个数据库的内容被删除,以便
#加载刚刚传输的RDB文件。

#以上所有情况,默认都是以阻塞的方式删除对象,
#就像调用了 DEL 一样。但是,您可以专门配置每种情况
#为了以非阻塞方式释放内存,例如如果 UNLINK
#被调用,使用以下配置指令:

lazyfree-lazy-eviction no
lazyfree-lazy-expire 没有
lazyfree-lazy-server-del 没有
复制惰性刷新没有

#############################仅追加模式###############################

#默认情况下,Redis 将数据集异步转储到磁盘上。这种模式是
#在许多应用程序中足够好,但 Redis 进程存在问题或
#断电可能会导致几分钟的写入丢失(取决于
#配置的保存点)。

#Append Only File 是另一种持久性模式,它提供
#更好的耐用性。例如使用默认数据 fsync 策略
#(见后面的配置文件) Redis 可能只丢失一秒钟的写入
#戏剧性的事件,例如服务器断电,或者发生单次写入
#Redis 进程本身发生错误,但操作系统是
#仍然正常运行。

#AOF 和 RDB 持久化可以同时启用,没有问题。
#如果启动时启用了 AOF Redis 会加载 AOF,也就是文件
#具有更好的耐用性保证。

#请查看 http://redis.io/topics/persistence 了解更多信息。

只附加没有

#仅附加文件的名称(默认:“appendonly.aof”)

附加文件名“appendonly.aof”

#fsync() 调用告诉操作系统实际将数据写入磁盘
#而不是在输出缓冲区中等待更多数据。有些操作系统真的会刷新
#磁盘上的数据,其他一些操作系统会尽快尝试。

#Redis 支持三种不同的模式:

#no:不要fsync,让操作系统在需要的时候刷新数据。快点。
#always: 每次写入仅附加日志后 fsync。慢,最安全。
#everysec: 每秒只 fsync 一次。妥协。

#默认是“everysec”,因为这通常是正确的妥协
#速度和数据安全。是否可以放松这一点取决于您自己
#“no” 让操作系统在何时刷新输出缓冲区
#它想要,以获得更好的表现(但如果你能接受
#一些数据丢失考虑默认的持久性模式,即快照),
#或者相反,使用“always”,它很慢但比它安全一点
#每秒。

#更多详情请查看以下文章:
#http://antirez.com/post/redis-persistence-demystified.html

#如果不确定,使用“everysec”。

#appendfsync 总是
每秒追加同步
#appendfsync 没有

#当AOF fsync策略设置为always或everysec时,后台
#保存过程(后台保存或AOF日志后台重写)是
#在某些 Linux 配置中对磁盘执行大量 I/O
#Redis 可能在 fsync() 调用上阻塞太久。请注意,没有修复
#目前这个,因为即使在不同的线程中执行 fsync 也会阻塞
#我们的同步 write(2) 调用。

#为了缓解这个问题,可以使用以下选项
#这将防止 fsync() 在主进程中被调用,而
#BGSAVE 或 BGREWRITEAOF 正在进行中。

#这意味着当另一个孩子正在保存时,Redis 的持久性是
#与“appendfsync none”相同。实际上,这意味着它是
#在最坏的情况下可能会丢失多达 30 秒的日志(使用
#默认 Linux 设置)。

#如果您有延迟问题,请将其设置为“是”。否则将其保留为
#从耐用性的角度来看,“否”是最安全的选择。

no-appendfsync-on-rewrite 否

#自动重写仅附加文件。
#Redis 能够自动重写日志文件,隐式调用
#BGREWRITEAOF 当 AOF 日志大小按指定百分比增长时。

#它是这样工作的:Redis 会记住 AOF 文件的大小
#最新的重写(如果重启后没有发生重写,则为
#使用启动时的 AOF)。

#此基本大小与当前大小进行比较。如果当前大小是
#大于指定百分比,触发重写。还
#您需要指定要重写的 AOF 文件的最小大小,这
#即使百分比增加,也有助于避免重写 AOF 文件
#已达到,但它仍然很小。

#指定百分比为零以禁用自动 AOF
#重写功能。

auto-aof-rewrite-percentage 100
自动 aof 重写最小大小 64mb

#Redis 期间可能会发现一个 AOF 文件在末尾被截断
#启动过程,当 AOF 数据被加载回内存时。
#这可能在运行 Redis 的系统时发生
#崩溃,尤其是在没有安装 ext4 文件系统的情况下
#data=ordered 选项(但是当 Redis 本身时这不会发生
#崩溃或中止,但操作系统仍然正常工作)。

#Redis 可以在发生这种情况时退出并返回错误,或者加载尽可能多的内容
#尽可能的数据(现在默认),如果找到 AOF 文件就开始
#最后被截断。以下选项控制此行为。

#如果 aof-load-truncated 设置为 yes,则加载截断的 AOF 文件并
#Redis 服务器开始发送日志以通知用户该事件。
#否则,如果选项设置为 no,服务器将中止并出现错误
#并拒绝开始。When the option is set to no, the user requires
#在重启前使用“redis-check-aof”工具修复 AOF 文件
# 服务器。

#注意如果中途会发现AOF文件损坏
#服务器仍将退出并出现错误。此选项仅适用于
#Redis 将尝试从 AOF 文件中读取更多数据但字节数不足
#会被发现。
aof-load-truncated yes

#当重写 AOF 文件时,Redis 可以在
#AOF 文件用于更快的重写和恢复。当这个选项被打开
#重写的 AOF 文件由两个不同的节组成:

#[RDB 文件][AOF 尾部]

#加载Redis时识别出AOF文件以“REDIS”开头
#字符串并加载前缀RDB文件,并继续加载AOF
# 尾巴。
aof-use-rdb-preamble 是的

###############################LUA 脚本###############################

#Lua 脚本的最大执行时间,以毫秒为单位。

#如果达到最大执行时间,Redis 将记录一个脚本
#在最大允许时间之后仍在执行,并将开始执行
#回复有错误的查询。

#当长时间运行的脚本超过最大执行时间时,只有
#SCRIPT KILL 和 SHUTDOWN NOSAVE 命令可用。第一个可以是
#用于停止尚未调用写入命令的脚本。第二
#是在写入命令被关闭的情况下关闭服务器的唯一方法
#已经由脚本发出但用户不想等待自然
#脚本终止。

#将其设置为 0 或负值以无限执行而不会发出警告。
lua 时间限制 5000

###############################REDIS 集群###############################

#普通 Redis 实例不能成为 Redis 集群的一部分;只有节点是
#作为集群节点启动即可。为了启动一个 Redis 实例作为
#cluster node 启用集群支持取消注释以下:

#集群启用是

#每个集群节点都有一个集群配置文件。这个文件不是
#旨在手动编辑。它由 Redis 节点创建和更新。
#每个 Redis 集群节点都需要不同的集群配置文件。
#确保在同一系统中运行的实例没有
#重叠的集群配置文件名。

#集群配置文件节点-6379.conf

#集群节点超时是节点不可访问的毫秒数
#让它被认为处于失败状态。
#大多数其他内部时间限制是节点超时的倍数。

#集群节点超时 15000

#一个失败的 master 的副本将避免启动故障转移,如果它的数据
#看起来太旧了。

#没有简单的方法让副本实际拥有精确的测量值
#它的“数据年龄”,因此执行以下两项检查:

#1) 如果有多个副本能够进行故障转移,它们会交换消息
#为了尽量让最好的副本有优势
#复制偏移量(来自主处理的更多数据)。
#副本将尝试通过偏移量获得排名,并应用于开始
#故障转移的延迟与其排名成正比。

#2) 每一个副本计算最后一次交互的时间
#它的主人。这可以是最后收到的 ping 或命令(如果主
#仍处于“已连接”状态),或自
#与主服务器断开连接(如果复制链接当前已关闭)。
#如果最后一次交互太旧,则副本不会尝试故障转移
#完全没有。

#点“2”可由用户调整。具体来说,副本不会执行
#故障转移,如果自上次与主服务器交互以来,时间
#经过的大于:

#(node-timeout * replica-validity-factor) + repl-ping-replica-period

#例如,如果 node-timeout 是 30 秒,replica-validity-factor
#为 10,假设默认的 repl-ping-replica-period 为 10 秒,则
#如果无法与主服务器通信,副本将不会尝试故障转移
#超过 310 秒。

#一个大的replica-validity-factor 可能允许具有太旧数据的replica 进行故障转移
#一个master,而一个太小的值可能会阻止集群能够
#选择一个副本。

#为了获得最大可用性,可以设置replica-validity-factor
#设置为 0,这意味着副本将始终尝试故障转移
#master 无论他们上次与 master 交互是什么时候。
#(但是他们总是会尝试应用与他们的延迟成比例的延迟
#偏移排名)。

#零是唯一能够保证所有分区都恢复的值
#集群将始终能够继续。

#集群副本有效性因子 10

#集群副本能够迁移到孤立的主节点,即主节点
#没有工作副本。这提高了集群能力
#抵抗失败,否则一个孤立的 master 不能被故障转移
#如果它没有工作副本,则在失败的情况下。

#仅当至少还有一个
#为他们的旧主人指定数量的其他工作副本。这个号码
#是“迁移障碍”。迁移障碍为 1 意味着副本
#仅当其主服务器至少有 1 个其他工作副本时才会迁移
#等等。它通常反映您想要的每个副本的数量
#集群中的主控。

#默认值为 1(副本仅在其主节点至少保留
#一个副本)。要禁用迁移,只需将其设置为一个非常大的值。
#可以设置0值,但只对调试有用,很危险
#在生产中。

#集群迁移屏障 1

#默认情况下,如果 Redis Cluster 节点检测到查询,则停止接受查询
#至少是一个未覆盖的哈希槽(没有可用的节点为其提供服务)。
#如果集群部分宕机(例如一系列哈希槽),这种方式
#不再被覆盖)所有集群最终变得不可用。
#一旦再次覆盖所有插槽,它就会自动返回可用。

#但是有时你想要集群的子集正在工作,
#继续接受对仍然存在的部分键空间的查询
#覆盖。为此,只需设置 cluster-require-full-coverage
#选项为否。

#cluster-require-full-coverage 是

#此选项,当设置为yes时,防止副本尝试对其进行故障转移
#master 故障期间的 master。然而,主人仍然可以执行
#手动故障转移,如果被迫这样做。

#这在不同的场景下很有用,尤其是在多个的情况下
#数据中心运营,如果没有,我们希望一方永远不会被提升
#在完全 DC 故障的情况下。

#cluster-replica-no-failover no

#为了设置你的集群,请务必阅读文档
#在 http://redis.io 网站上可用。

#########################集群 DOCKER/NAT 支持 #######################

#在某些部署中,Redis Cluster 节点地址发现失败,因为
#地址是 NAT-ted 或因为端口被转发(典型情况是
#Docker 和其他容器)。

#为了让 Redis Cluster 在这样的环境下工作,一个静态的
#需要每个节点都知道其公共地址的配置。这
#以下两个选项用于此范围,它们是:

#* cluster-announce-ip
#* 集群公告端口
#* 集群公告总线端口

#每个都向节点指示其地址、客户端端口和集群消息
#总线端口。然后将信息发布在总线数据包的标头中
#以便其他节点能够正确映射该节点的地址
#发布信息。

#如果不使用以上选项,则正常Redis Cluster自动检测
#将被使用。

#注意重映射时,总线端口可能不在固定偏移
#客户端端口 + 10000,因此您可以指定任何端口和总线端口,具体取决于
#它们是如何重新映射的。如果未设置总线端口,则固定偏移量为
#10000 将照常使用。

# 例子:

#cluster-announce-ip 10.1.1.5
#集群公告端口 6379
#集群公告总线端口 6380

################################慢日志###################################

#Redis 慢日志是一个记录超过指定查询的系统
# 执行时间处理时间。执行时间不包括 I/O 操作
#比如与客户交谈,发送回复等等,
#但只是实际执行命令所需的时间(这是唯一的
#线程被阻塞且无法服务的命令执行阶段
#同时还有其他请求)。

#可以用两个参数来配置慢日志:一个告诉Redis
#要超过多少执行时间,以微秒为单位
#获取日志的命令,另一个参数是长度
#慢日志。当记录一个新命令时,最旧的命令会从
#记录命令的队列。

#下面的时间用微秒表示,所以1000000是等价的
#到一秒。请注意,负数禁用慢日志,而
#零值强制记录每个命令。
慢于 10000 的慢日志

#这个长度没有限制。请注意,它会消耗内存。
#你可以通过 SLOWLOG RESET 回收慢日志使用的内存。
慢日志最大长度 128

###############################延迟监视器##############################

#Redis 延迟监控子系统对不同操作进行采样
#在运行时收集与可能的来源相关的数据
#Redis 实例的延迟。

#通过 LATENCY 命令,此信息可供用户使用
#打印图表并获取报告。

#系统只记录在等于或等于时间内执行的操作
#大于通过指定的毫秒数
#latency-monitor-threshold 配置指令。当它的值被设置时
#为零,延迟监视器关闭。

#默认情况下延迟监控是禁用的,因为它大部分是不需要的
#如果你没有延迟问题,并且收集数据有性能
#影响,虽然非常小,但可以在大负载下测量。潜伏
#可以在运行时使用命令轻松启用监控
#“CONFIG SET latency-monitor-threshold <毫秒>” 如果需要。
延迟监控阈值 0

############################事件通知#############################

#Redis 可以通知 Pub/Sub 客户端有关密钥空间中发生的事件。
#此功能记录在 http://redis.io/topics/notifications

#例如,如果启用了键空间事件通知,并且客户端
#对存储在数据库 0 中的键“foo”执行 DEL 操作,两个
#消息将通过 Pub/Sub 发布:

#发布 keyspace@0:foo del
#发布 keyevent@0:del foo

#可以在集合中选择 Redis 将通知的事件
#类。每个类都由一个字符标识:

#K Keyspace 事件,以 keyspace@ 前缀发布。
#E Keyevent 事件,以 keyevent@ 前缀发布。
#g 通用命令(非特定类型),如 DEL、EXPIRE、RENAME、…
#$ 字符串命令
#l 列出命令
#s 设置命令
#h 哈希命令
#z 排序集命令
#x 过期事件(每次密钥过期时生成的事件)
#e 逐出事件(当一个键被逐出最大内存时产生的事件)
#g$lshzxe 的别名,因此“AKE”字符串表示所有事件。

#“notify-keyspace-events” 将一个字符串作为参数
#零个或多个字符。空字符串表示通知
#被禁用。

#示例:启用列表和通用事件,从
#事件名称,使用:

#通知键空间事件 Elg

#示例2:获取订阅频道的过期key的流
#name keyevent@0:过期使用:

#通知键空间事件前

#默认情况下,所有通知都被禁用,因为大多数用户不需要
#这个特性和特性有一些开销。请注意,如果您不
#至少指定 K 或 E 之一,不会传递任何事件。
通知键空间事件“”

##############################高级配置###############################

#当哈希值有
#条目数量少,最大条目不超过给定
# 临界点。可以使用以下指令配置这些阈值。
哈希最大 ziplist 条目 512
哈希最大 ziplist 值 64

#列表也以特殊方式编码以节省大量空间。
#可以指定每个内部列表节点允许的条目数
#作为固定的最大尺寸或最大元素数。
#对于固定的最大大小,使用 -5 到 -1,表示:
#-5: max size: 64 Kb <-- 不推荐用于正常工作负载
#-4:最大大小:32 Kb <–不推荐
#-3: max size: 16 Kb <-- 可能不推荐
#-2:最大大小:8 Kb <-- 好
#-1:最大大小:4 Kb <-- 好
#正数意味着存储最多 exactly 该数量的元素
#每个列表节点。
#性能最高的选项通常是 -2(8 Kb 大小)或 -1(4 Kb 大小),
#但如果您的用例是独一无二的,请根据需要调整设置。
list-max-ziplist-size -2

#列表也可以被压缩。
#压缩深度是来自 each 边的 quicklist ziplist 节点的数量
#要从压缩中排除的列表。列表的头部和尾部
#对于快速推送/弹出操作,始终未压缩。设置如下:
#0: 禁用所有列表压缩
#1: depth 1 表示“直到 1 个节点进入列表后才开始压缩,
#从头部或尾部开始"
#所以:[head]->node->node->…->node->[tail]
#[head], [tail] 将始终未压缩;内部节点将压缩。
#2: [head]->[next]->node->node->…->node->[prev]->[tail]
#2 这里的意思是:不要压缩head or head->next or tail->prev or tail,
#但压缩它们之间的所有节点。
#3: [head]->[next]->[next]->node->node->…->node->[prev]->[prev]->[tail]
# ETC。
列表压缩深度 0

#集合仅在一种情况下具有特殊编码:当集合组成时
#恰好是范围内基数为 10 的整数的字符串
#64 位有符号整数。
#以下配置设置设置了大小的限制
#设置以便使用这种特殊的内存节省编码。
设置最大整数条目 512

#与哈希和列表类似,排序集也被特殊编码为
#为了节省大量空间。此编码仅在长度和
#有序集合的元素低于以下限制:
zset-max-ziplist-条目 128
zset-max-ziplist-value 64

#HyperLogLog 稀疏表示字节数限制。该限制包括
#16 字节标头。当使用稀疏表示的 HyperLogLog 交叉
#这个限制,它被转换为密集表示。

#大于 16000 的值是完全没有用的,因为此时
#密集表示更节省内存。

#建议值是 ~ 3000,以便获得以下好处
#节省空间的编码,不会减慢太多的 PFADD,
#这是 O(N) 的稀疏编码。值可以提升到
#~ 10000 当 CPU 不是一个问题,但空间是,数据集是
#由许多 HyperLogLogs 组成,基数在 0 - 15000 范围内。
hll-sparse-max-bytes 3000

#Streams 宏节点最大大小/项目。流数据结构是基数
#对内部多个项目进行编码的大节点树。使用此配置
#可以配置单个节点的大小(以字节为单位),以及
#在切换到新节点之前它可能包含的最大项目数
#添加新的流条目。如果以下任何设置被设置为
#零,限制被忽略,所以例如可以只设置一个
#通过将 max-bytes 设置为 0 并将 max-entries 设置为所需的最大整数限制
# 价值。
流节点最大字节数 4096
流节点最大条目 100

#主动重新散列在每 100 毫秒的 CPU 时间中使用 1 毫秒
#命令帮助 rehash 主 Redis 哈希表(映射顶层的一个
#键值)。Redis 使用的哈希表实现(参见 dict.c)
#执行惰性重新散列:对哈希表执行的操作越多
#也就是重新散列,执行的重新散列“步骤”越多,所以如果
#服务器空闲,重新散列永远不会完成,并且使用了更多内存
#通过哈希表。

#默认是每秒使用这个毫秒 10 次,以便
#主动重新散列主字典,尽可能释放内存。

#如果不确定:
#如果您有硬延迟要求,请使用“activerehashing no”
#在你的环境里Redis可以时不时回复的不是好事
#以 2 毫秒延迟查询。

#如果你没有这么严格的要求,请使用“activerehashing yes”,但是
#希望尽可能快地释放内存。
主动重新散列是

#客户端输出缓冲区限制可用于强制断开客户端
#由于某种原因没有足够快地从服务器读取数据(a
#常见原因是 Pub/Sub 客户端无法像
#出版商可以制作它们)。

#可以为三种不同类别的客户端设置不同的限制:

#normal -> 普通客户端,包括 MONITOR 客户端
#副本 -> 副本客户端
#pubsub -> 客户端订阅了至少一个 pubsub 频道或模式

#每个 client-output-buffer-limit 指令的语法如下:

#client-output-buffer-limit

#一旦达到硬限制,客户端立即断开连接,或者如果
#达到软限制并保持达到指定数量的
#秒(连续)。
#例如,如果硬限制是 32 兆字节,软限制是
#16 兆字节/10 秒,客户端将立即断开连接
#如果输出缓冲区的大小达到 32 兆字节,但也会得到
#如果客户端达到 16 兆字节并不断克服,则断开连接
#10 秒的限制。

#默认情况下,普通客户端不受限制,因为它们不接收数据
#不询问(以推送方式),但在请求之后,所以只有
#异步客户端可能会创建一个请求数据更快的场景
#比它可以读取。

#相反,pubsub 和副本客户端有一个默认限制,因为
#订阅者和副本以推送方式接收数据。

#硬限制或软限制都可以通过将它们设置为零来禁用。
客户端输出缓冲区限制正常 0 0 0
客户端输出缓冲区限制副本 256mb 64mb 60
客户端输出缓冲区限制 pubsub 32mb 8mb 60

#客户端查询缓冲区累积新命令。它们仅限于固定
#默认数量,以避免协议不同步(对于
#实例由于客户端中的错误)将导致未绑定的内存使用
#查询缓冲区。但是,如果您有非常特殊的情况,您可以在这里配置它
#需要,例如我们巨大的多/执行请求或类似请求。

#客户端查询缓冲区限制 1gb

#Redis协议中,批量请求,即表示单个的元素
#字符串,通常限制为 512 mb。但是您可以更改此限制
# 这里。

#proto-max-bulk-len 512mb

#Redis 调用一个内部函数来执行许多后台任务,比如
#超时关闭客户端连接,清除过期键
#从未请求过,依此类推。

#并非所有任务都以相同的频率执行,但 Redis 会检查
#根据指定的“hz”值执行的任务。

#默认情况下,“hz”设置为 10。提高该值将使用更多 CPU 时
#Redis 处于空闲状态,但同时也会让 Redis 的响应速度更快
#有很多key同时过期,可能会超时
#更精确地处理。

#范围在 1 到 500 之间,但通常不会超过 100
# 一个好主意。大多数用户应该使用默认值 10 并将其提高到
#100 仅在需要非常低延迟的环境中。
赫兹 10

#通常有一个 HZ 值是有用的,它与
#连接的客户端数量。这很有用,例如,
#避免每次后台任务调用处理过多的客户端
#为了避免延迟峰值。

#由于默认的默认HZ值保守设置为10,所以Redis
#提供并默认启用使用自适应 HZ 值的能力
#当有许多连接的客户端时会临时提高。

#启用动态 HZ 时,实际配置的 HZ 将用作
#作为基线,但实际上是配置的 HZ 值的倍数
#在连接更多客户端后根据需要使用。这样一个空闲的
#实例将使用非常少的 CPU 时间,而繁忙的实例将
#反应更灵敏。
动态-hz 是

#当孩子重写AOF文件时,如果启用了以下选项
#每生成 32 MB 数据,文件将被 fsync-ed。这很有用
#为了更增量地将文件提交到磁盘并避免
#大延迟峰值。
aof-rewrite-incremental-fsync 是

#redis保存RDB文件时,如果启用了以下选项
#每生成 32 MB 数据,文件将被 fsync-ed。这很有用
#为了更增量地将文件提交到磁盘并避免
#大延迟峰值。
rdb-save-incremental-fsync 是

#Redis LFU eviction(见 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-factor 为 10。这是频率如何变化的表格
#计数器随着不同的访问次数而变化
#对数因子:

#±-------±-----------±-----------±-----------+ ------------±-----------+
#| 因素 | 100 次点击 | 1000 次点击 | 10 万次点击 | 100 万次点击 | 1000 万次点击 |
#±-------±-----------±-----------±-----------+ ------------±-----------+
#| 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 incr foo
#redis-cli 对象频率 foo

#注意 2:计数器初始值为 5,以便为新对象提供机会
#累积点击数。

#计数器衰减时间是按顺序必须经过的时间,以分钟为单位
#键计数器除以二(如果有值则递减
#少 <= 10)。

#lfu-decay-time 的默认值为 1。特殊值 0 表示
#每次碰巧扫描计数器时衰减计数器。

#lfu-log-factor 10
#lfu-衰减时间 1

##########################主动碎片整理######################

#警告此功能是实验性的。然而它经过了压力测试
#甚至在生产中并由多名工程师手动测试了一些
# 时间。

#什么是主动碎片整理?
#-------------------------------------------

#主动(在线)碎片整理允许 Redis 服务器压缩
#在内存中数据的小分配和释放之间留有空间,
#从而允许回收内存。

#碎片化是每个分配器都会发生的自然过程(但
#幸运的是,Jemalloc 和某些工作负载更是如此。通常是服务器
#需要重新启动以降低碎片,或者至少刷新
#删除所有数据并重新创建它。然而由于这个功能
#由 Oran Agra 为 Redis 4.0 实现这个过程可以在运行时发生
#在服务器运行时以“热”的方式。

#基本上当碎片超过一定程度时(见
#下面的配置选项)Redis 将开始创建新的副本
#通过利用某些特定 Jemalloc 在连续内存区域中的值
#features(为了了解分配是否导致碎片
#并将其分配到更好的地方),同时,将释放
#数据的旧副本。这个过程,对所有键递增地重复
#将导致碎片回落到正常值。

#需要理解的重要事项:

#1. 这个特性默认是关闭的,只有在你编译过 Redis 的情况下才有效
#使用我们随 Redis 的源代码提供的 Jemalloc 的副本。
#这是 Linux 构建的默认设置。

#2. 如果你没有碎片,你永远不需要启用这个功能
# 问题。

#3. 一旦遇到碎片,可以在以下情况下启用此功能
#需要命令“CONFIG SET activedefrag yes”。

#配置参数能够微调的行为
#碎片整理过程。如果你不确定他们的意思是什么
#保持默认值不变是个好主意。

#启用主动碎片整理
#activedefrag 是的

#启动主动碎片整理的最小碎片浪费量
#主动碎片整理忽略字节 100mb

#启动主动碎片整理的最小碎片百分比
#主动碎片整理阈值下限 10

#我们使用最大努力的最大碎片百分比
#主动碎片整理阈值上限 100

#CPU 百分比的碎片整理工作量最小
#主动碎片整理循环分钟 5

#CPU 百分比碎片整理的最大努力
#主动碎片整理周期最大 75

#将从中处理的 set/hash/zset/list 字段的最大数量
#主字典扫描
#主动碎片整理最大扫描字段 1000

#在某些情况下,redis 会发出警告,甚至在检测到时拒绝启动
#系统处于不良状态,可以抑制这些警告
#通过设置以下配置,该配置采用空格分隔的警告列表
# 压制

#忽略警告 ARM64-COW-BUG

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis 是一种高性能的键值存储数据库,它支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等。Windows Redis 5.0Redis 在 Windows 平台上的一个版本。在 Windows Redis 5.0 安装包中,包含了 Redis 服务器和客户端,安装包的文件名为 redis-x64-5.0.10.msi。 如果您需要安装 Windows Redis 5.0,可以按照以下步骤进行操作: 1. 下载 Windows Redis 5.0 安装包:您可以在 Redis 官方网站的下载页面(https://redis.io/download)中找到 Windows Redis 5.0 的安装包下载链接,也可以在其他第三方网站上下载。在下载页面中选择适合您的操作系统版本,例如 windows 64-bit。 2. 安装 Redis:双击下载好的 redis-x64-5.0.10.msi 文件,按照提示进行安装。在安装过程中,您可以选择 Redis 的安装路径、数据文件存放路径、是否将 Redis 作为 Windows 服务运行等选项。 3. 配置 Redis:安装完成后,您需要对 Redis 进行配置。Redis 的配置文件位于安装目录下的 redis.windows.conf 文件中,您可以根据实际需求修改配置文件中的参数。例如,您可以修改 Redis 监听的端口号、允许的最大客户端连接数、是否启用 AOF 持久化等选项。 4. 启动 Redis:配置完成后,您可以通过在命令行窗口中执行 redis-server.exe 命令来启动 Redis 服务器。如果您将 Redis 设置为 Windows 服务运行,则可以通过服务管理器中启动 Redis 服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值