Appearance
如何配置 Garnet
Garnet 服务器(GarnetServer.exe)可以使用配置文件(例如 garnet.conf
或 redis.conf
)进行配置,而命令行参数可以用来覆盖文件中指定的任何设置。任何未在配置文件或命令行参数中指定的设置都将设置为defaults.conf
文件中指定的默认值(可以通过命令行参数覆盖此文件的路径)。
目前,Garnet 支持两种配置文件格式:
garnet.conf
文件格式(默认)- 一组以 JSON 格式排列的设置redis.conf
文件格式 - Redis 配置文件格式中的一组设置:有关参考,请参阅 Redis 文档。 重要提示: Garnet 并不支持所有keyword argument1 argument2 argument3 ... argumentN
redis.conf
关键字。为了完整覆盖配置设置,请使用garnet.conf
格式。
通过命令行参数指定配置文件路径(和默认文件路径)可以通过以下方式完成。
- 对于
garnet.conf
:GarnetServer.exe --config-import-path <file-path>
- 对于
redis.conf
:GarnetServer.exe --config-import-path <file-path> --config-import-format RedisConf
注意: 若要更改默认配置文件的路径(和/或格式),请分别使用 config-default-import-path
和 config-default-import-format
关键字。
garnet.conf
Garnet 的默认配置文件格式,支持所有可配置的 Garnet 设置。 garnet.conf
是一个以 JSON 格式的文件,包含一组配置设置。有关所有可用设置,请参阅 defaults.conf
文件或查看完整的 Garnet 设置 列表。
redis.conf
Garnet 支持 redis.conf
文件格式作为配置文件。请注意,并非所有 redis.conf
关键字都受支持。请参阅以下支持的 redis.conf
关键字列表:
redis.conf Keywords | garnet.conf Keywords | 注意 |
---|---|---|
bind | bind | 仅使用第一个地址 |
port | port | |
maxmemory | memory | |
logfile | file-logger | |
loglevel | logger-level | |
dir | checkpointdir | |
requirepass | password | |
aclfile | acl-file | |
cluster-enabled | cluster | |
cluster-node-timeout | cluster-timeout | |
tls-port | tls | 否则端口号被忽略 |
tls-cert-file | cert-file-name | Garnet 目前支持使用 .pfx 文件和密码来进行 TLS 加密,而 Redis 支持使用 .crt 和 .key 文件。为了在使用 redis.conf 文件配置 Garnet 的 TLS 加密,请将您的证书转换为 .pfx 格式(请参阅安全部分中的详细信息),然后将 .pfx 文件路径用作 tls-cert-file 的值。如果在创建原始证书时使用了密码,请像在 Redis 中一样在 tls-key-file-pass 参数中指定它(或通过 --cert-password 命令行参数指定)。启动服务器时,如果适用,请使用 --cert-subject-name 命令行参数设置证书主题名称。 |
tls-key-file | cert-password | 请参阅 tls-cert-file 的注意事项 |
tls-auth-clients | client-certificate-required | 请参阅 tls-cert-file 的注意事项 |
latency-tracking | latency-monitor | |
io-threads | numthreads | |
repl-diskless-sync-delay | replica-sync-delay |
命令行参数
任何 Garnet 设置都可以通过指定命令行参数进行配置。/ 如果设置也在配置文件中指定,那么它将被命令行中指定的值覆盖。/ 要查看所有可用的命令行设置,请运行 GarnetServer.exe -h
或 GarnetServer.exe -help
,或参考完整的 Garnet 设置 列表。
可配置的设置
garnet.conf keyword | Command line keyword(s) | Type | Valid Values | 描述 |
---|---|---|---|---|
Port | --port | int | 整数范围: [0, 65535] | 运行服务器的端口 |
Address | --bind | string | IPv4/v6格式的IP地址 | 服务器绑定的IP地址(默认:任意) |
MemorySize | -m --memory | string | 内存大小 | 内存使用总日志内存(向下舍入为2的幂) |
PageSize | -p --page | string | 内存大小 | 每个页面的大小(向下舍入为2的幂) |
SegmentSize | -s --segment | string | 内存大小 | 磁盘上每个日志段的大小(向下舍入为2的幂) |
IndexSize | -i --index | string | 内存大小 | 散列索引的大小(向下舍入为2的幂) |
IndexMaxSize | --index-max-size | string | 内存大小 | 散列索引的最大大小(向下舍入为2的幂) |
MutablePercent | --mutable-percent | int | 保持可变的日志内存百分比 | |
ObjectStoreTotalMemorySize | --obj-total-memory | string | 内存大小 | 包括堆内存在内的总对象存储日志内存使用 |
ObjectStoreLogMemorySize | --obj-memory | string | 内存大小 | 不包括堆内存在内的对象存储日志内存使用 |
ObjectStorePageSize | --obj-page | string | 内存大小 | 每个对象存储页面的大小(向下舍入为2的幂) |
ObjectStoreSegmentSize | --obj-segment | string | 内存大小 | 磁盘上每个对象存储日志段的大小(向下舍入为2的幂) |
ObjectStoreIndexSize | --obj-index | string | 内存大小 | 对象存储散列索引的大小(向下舍入为2的幂) |
ObjectStoreIndexMaxSize | --obj-index-max-size | string | 内存大小 | 对象存储散列索引的最大大小(向下舍入为2的幂) |
ObjectStoreMutablePercent | --obj-mutable-percent | int | 保持可变的对象存储日志内存百分比 | |
EnableStorageTier | --storage-tier | bool | 启用记录(混合日志)的分层存储,以支持大于内存的存储。使用 --logdir 指定存储目录。 | |
CopyReadsToTail | --copy-reads-to-tail | bool | 从主存储的内存不可变区域或存储设备读取记录时,将其复制到日志的尾部。 | |
ObjectStoreCopyReadsToTail | --obj-copy-reads-to-tail | bool | 从对象存储的内存不可变区域或存储设备读取记录时,将其复制到日志的尾部。 | |
LogDir | -l --logdir | string | 用于分层记录(混合日志)的存储目录,如果启用了分层存储(--storage)。如果未指定,则使用当前目录。 | |
CheckpointDir | -c --checkpointdir | string | 检查点的存储目录。如果未指定,则使用 logdir。 | |
Recover | -r --recover | bool | 从最新的检查点和日志中恢复(如果存在)。 | |
DisablePubSub | --no-pubsub | bool | 禁用服务器上的发布/订阅功能。 | |
EnableIncrementalSnapshots | --incsnap | bool | 启用增量快照。 | |
PubSubPageSize | --pubsub-pagesize | string | 内存大小 | 用于发布/订阅的日志页面大小(向下舍入为2的幂) |
DisableObjects | --no-obj | bool | 禁用数据结构对象的支持。 | |
EnableCluster | --cluster | bool | 启用集群。 | |
CleanClusterConfig | --clean-cluster-config | bool | 使用干净的集群配置启动。 | |
AuthenticationMode | --auth | GarnetAuthenticationMode | NoAuth, Password, Aad, ACL | Garnet的身份验证模式。这影响如何处理AUTH命令以及如何对客户端进行身份验证。值选项:NoAuth,Password,Aad,ACL |
Password | --password | string | 用于密码验证的身份验证字符串。 | |
ClusterUsername | --cluster-username | string | 用于对群集内部通信进行身份验证的用户名。 | |
ClusterPassword | --cluster-password | string | 用于对群集内部通信进行身份验证的密码。 | |
AclFile | --acl-file | string | 外部ACL用户文件。 | |
AadAuthority | --aad-authority | string | AAD身份验证的权限。 | |
AadAudiences | --aad-audiences | string | AAD身份验证令牌的听众。应该是一个逗号分隔的字符串。 | |
AadIssuers | --aad-issuers | string | AAD身份验证令牌的发行者。应该是一个逗号分隔的字符串。 | |
AuthorizedAadApplicationIds | --aad-authorized-app-ids | string | 用于AAD身份验证的授权客户端应用程序ID。应该是一个逗号分隔的字符串。 | |
EnableAOF | --aof | bool | 启用预写式日志(追加日志文件)。 | |
AofMemorySize | --aof-memory | string | 内存大小 | 用于AOF内存缓冲区的总大小(向下舍入为2的幂)- 在此限制之后溢出到磁盘 |
AofPageSize | --aof-page-size | string | 内存大小 | 每个AOF页面的大小(向下舍入为2的幂) |
CommitFrequencyMs | --aof-commit-freq | int | 整数范围: [-1, 最大值] | 写前日志(追加日志文件)的提交问题频率,以毫秒为单位。0 =每个操作都发出一个立即提交,-1 =使用COMMITAOF命令手动发出提交 |
WaitForCommit | --aof-commit-wait | bool | 在将AOF刷新提交之前等待并返回结果给客户端。警告:这将极大地增加操作的延迟。 | |
AofSizeLimit | --aof-size-limit | string | 内存大小 | AOF的最大大小(向下舍入为2的幂),之后将应用不安全的截断。如果留空,则AOF将无限增长,除非采取检查点。 |
CompactionFrequencySecs | --compaction-freq | int | 范围内的整数: [0, MaxValue] | 后台混合日志压缩频率(以秒为单位)。 0 = 禁用(在检查点之前执行压缩) |
CompactionFrequencySecs | --compaction-freq | int | 整数范围: [0, 最大值] | 后台混合日志压缩的频率,单位为秒。0 = 禁用(在检查点之前执行压缩) |
CompactionType | --compaction-type | LogCompactionType | None, Shift, ShiftForced, Scan, Lookup | 混合日志压缩类型。值选项:None - 无压缩,Shift - 移动起始地址而不压缩(数据丢失),ShiftForced - 移动起始地址而不压缩(数据丢失)。立即删除文件 - 如果计划在故障后恢复,则不要使用,Scan - 扫描旧页面并将活动记录移到尾部(无数据丢失 - 请确保在磁盘上实际删除旧数据之前进行检查点),Lookup - 查找压缩范围内的每个记录,用于哈希链进行记录存活性检查(无数据丢失 - 请确保在磁盘上实际删除旧数据之前进行检查点) |
CompactionMaxSegments | --compaction-max-segments | int | 整数范围: [0, 最大值] | 触发压缩之前在磁盘上创建的日志段数。 |
ObjectStoreCompactionMaxSegments | --obj-compaction-max-segments | int | 整数范围: [0, 最大值] | 触发压缩之前在磁盘上创建的对象存储日志段数。 |
GossipSamplePercent | --gossip-sp | int | 在每次散播迭代中与之通信的集群节点的百分比。 | |
GossipDelay | --gossip-delay | int | 整数范围: [0, 最大值] | 集群模式下散播协议每个节点的睡眠(以秒为单位)延迟以发送更新的配置。 |
ClusterTimeout | --cluster-timeout | int | 整数范围: [0, 最大值] | 集群节点超时是节点必须不可达的秒数。 |
ClusterTlsClientTargetHost | --cluster-tls-client-target-host | string | 使用TLS连接时,集群模式下的客户端目标主机的名称。 | |
EnableTLS | --tls | bool | 启用TLS。 | |
CertFileName | --cert-file-name | string | TLS证书文件名(例如:testcert.pfx)。 | |
CertPassword | --cert-password | string | TLS证书密码(例如:占位符)。 | |
CertSubjectName | --cert-subject-name | string | TLS证书主题名称。 | |
CertificateRefreshFrequency | --cert-refresh-freq | int | 整数范围: [0, 最大值] | TLS证书刷新频率(以秒为单位)(0表示禁用)。 |
ClientCertificateRequired | --client-certificate-required | bool | 是否需要TLS客户端证书。 | |
CertificateRevocationCheckMode | --certificate-revocation-check-mode | X509RevocationMode | NoCheck, Online, Offline | 证书验证的证书吊销检查模式(NoCheck,Online,Offline)。 |
IssuerCertificatePath | --issuer-certificate-path | string | 用于验证的颁发者证书的完整路径文件。如果为空或null,则不会执行对颁发者的验证。 | |
LatencyMonitor | --latency-monitor | bool | 跟踪各种事件的延迟。 | |
MetricsSamplingFrequency | --metrics-sampling-freq | int | 整数范围: [0, 最大值] | 指标采样频率(以秒为单位)。值为0将禁用指标监视任务。 |
QuietMode | -q -- | bool | 启用安静模式不打印服务器版本和文本艺术。 | |
LogLevel | --logger-level | LogLevel | Trace, Debug, Information, Warning, Error, Critical, None | 日志级别。值选项:Trace, Debug, Information, Warning, Error, Critical, None |
DisableConsoleLogger | --disable-console-logger | bool | 禁用控制台记录器。 | |
FileLogger | --file-logger | string | 启用文件记录器并写入指定路径。 | |
ThreadPoolMinThreads | --minthreads | int | 整数范围: [0, 最大值] | 线程池中的最小工作线程和完成线程数,0使用系统默认值。 |
ThreadPoolMaxThreads | --maxthreads | int | 整数范围: [0, 最大值] | 线程池中的最大工作线程和完成线程数,0使用系统默认值。 |
值。 | ||||
UseAzureStorage | --use-azure-storage | bool | 使用Azure页面Blob进行存储,而不是使用本地存储。 | |
AzureStorageConnectionString | --storage-string | string | 在连接到Azure Blob存储时使用的连接字符串。 | |
CheckpointThrottleFlushDelayMs | --checkpoint-throttle-delay | int | 整数范围: [-1, 最大值] | 是否以及多久应该限制检查点的磁盘IO:-1 - 禁用限制;>= 0 - 在单独的任务中运行检查点刷新,在每次WriteAsync之后睡眠指定的时间 |
EnableFastCommit | --fast-commit | bool | 写入AOF时使用FastCommit。 | |
FastCommitThrottleFreq | --fast-commit-throttle | int | 整数范围: [0, 最大值] | 将FastCommit节流到每K次提交一次写入元数据。 |
NetworkSendThrottleMax | --network-send-throttle | int | 整数范围: [0, 最大值] | 限制每个会话的最大未完成网络发送。 |
EnableScatterGatherGet | --sg-get | bool | 我们是否对MGET或一批连续的GET操作使用分散聚集IO - 有助于饱和磁盘随机读取IO。 | |
ReplicaSyncDelayMs | --replica-sync-delay | int | 整数范围: [0, 最大值] | 是否以及以多少毫秒(毫秒)节流复制同步:0 - 禁用节流 |
MainMemoryReplication | --main-memory-replication | bool | 使用主存储器复制模型。 | |
OnDemandCheckpoint | --on-demand-checkpoint | bool | 与主存储器复制模型一起使用。按需进行检查点以避免在附加时丢失数据 | |
UseAofNullDevice | --aof-null-device | bool | 对于主存储器复制,使用空设备进行AOF。确保没有磁盘IO,但在复制期间可能导致数据丢失。 | |
ConfigImportPath | --config-import-path | string | 从提供的路径导入(加载)配置选项 | |
ConfigImportFormat | --config-import-format | ConfigFileType | GarnetConf, RedisConf | 在config-import-path中指定的路径中的配置选项的格式 |
ConfigExportFormat | --config-export-format | ConfigFileType | GarnetConf, RedisConf | 将当前配置选项导出(保存)到提供的路径中的格式 |
UseAzureStorageForConfigImport | --use-azure-storage-for-config-import | bool | 使用Azure存储导入配置文件 | |
ConfigExportPath | --config-export-path | string | 将当前配置选项导出(保存)到提供的路径 | |
UseAzureStorageForConfigExport | --use-azure-storage-for-config-export | bool | 使用Azure存储导出配置文件 | |
UseNativeDeviceLinux | --use-native-device-linux | bool | 在Linux上使用本地设备进行本地存储 | |
RevivBinRecordSizes | --reviv-bin-record-sizes | int[] | #,#,...,#: 对于主存储器,按大小递增的记录大小,顺序为递增大小。代替默认的--reviv;不能与--reviv-in-chain-only一起使用 | |
RevivBinRecordCounts | --reviv-bin-record-counts | int[] | #,#,...,#: 对于主存储器,每个bin中的记录数:默认(未指定):如果指定了reviv-bin-record-sizes,则每个bin都是256条记录 #(一个值):如果指定了reviv-bin-record-sizes,则所有bin都具有此记录数,否则错误 #,#,...,#(多个值):如果指定了reviv-bin-record-sizes,则它的大小必须与该数组的大小相同,否则错误 代替默认的--reviv;不能与--reviv-in-chain-only一起使用 | |
RevivifiableFraction | --reviv-fraction | double | 双精度浮点数范围: [0, 1] | #: 主存储器中从高日志地址向下到只读区域的可恢复内存空间的分数。适用于主存储器和对象存储。 |
EnableRevivification | --reviv | bool | 一种快捷方式,用于指定默认的2的幂大小的bin的恢复。此默认值可以被--reviv-in-chain-only或通过reviv-bin-record-sizes和reviv-bin-record-counts的组合覆盖。 | |
RevivNumberOfBinsToSearch | --reviv-search-next-higher-bins | int | 整数范围: [0, 最大值] | 如果无法在最佳匹配的bin中满足搜索,则搜索这个数量的下一个更高的bin。需要--reviv或reviv-bin-record-sizes和reviv-bin-record-counts的组合 |
RevivBinBestFitScanLimit | --reviv-bin-best-fit-scan-limit | int | 整数范围: [0, 最大值] | 在找到最佳匹配后的扫描限制此数量的记录以获取最佳匹配。需要--reviv或reviv-bin-record-sizes和reviv-bin-record-counts的组合 0:使用第一个匹配 #: 在第一个匹配后限制扫描到这么多记录,直到bin的记录计数为止 |
RevivInChainOnly | --reviv-in-chain-only | bool | 仅在标签链中恢复被墓碑化的记录(不使用空闲列表)。无法与reviv-bin-record-sizes或reviv-bin-record-counts一起使用。默认情况下传播到对象存储。 | |
RevivObjBinRecordCount | --reviv-obj-bin-record-count | int | 整数范围: [0, 最大值] | 对象存储中单个空闲记录bin中的记录数。与主存储器不同,对象存储仅有一个bin。仅当主存储器使用空闲记录列表时才有效。 |
ObjectScanCountLimit | --object-scan-count-limit | int | 整数范围: [0, 最大值] | 在*SCAN命令的一次迭代中返回的项目限制数。 |
ExtensionBinPaths | --extension-bin-paths | string[] | 服务器上的目录列表,管理员用户可以从中加载自定义命令二进制文件 | |
ExtensionAllowUnsignedAssemblies | --extension-allow-unsigned | bool | 允许从未经数字签名的程序集加载自定义命令(不推荐) | |
IndexResizeFrequencySecs | --index-resize-freq | int | 整数范围: [1, 最大值] | 指数调整检查频率,以秒为单位 |
IndexResizeThreshold | --index-resize-threshold | int | 整数范围: [1, 100] | 触发指数调整的溢出桶计数与总指数大小的百分比 |
[^1]:表示内存大小的字符串。可以是多个字节,也可以遵循以下模式:1k、1kb、5M、5Mb、10g、10GB 等。