Engula 配置指南

Engula 在 配置语义上与 Valkey/Redis 7.2 完全兼容。 在大多数生产环境中,您可以直接参考 Valkey 的官方配置文档,并按原样应用。

权威参考: Valkey 配置文档

本指南概述 Engula 的配置管理方式,包括基于文件与命令行的配置、运行时修改,以及 Engula 预留的扩展配置项(占位,面向未来能力扩展)。

快速开始

Engula 可以在没有配置文件的情况下使用 内置默认值 启动。 但在生产部署中,强烈建议使用配置文件,以确保设置可预测、可复现。

默认行为

  • 默认配置文件名: engula.confredis.conf(两者均可识别)
  • 使用自定义配置文件启动:
    1engula-server /path/to/engula.conf

当运行多个实例(如副本、集群节点)时,建议至少隔离并调整以下参数:

  • dir
  • logfile
  • port(或 bind 地址)
  • replicaof
  • requirepass
  • masterauth

启动示例:

1engula-server /etc/engula/engula.conf

配置文件格式

Engula 使用与 Valkey/Redis 7.2 相同的 语法与指令格式

keyword argument1 argument2 ... argumentN

示例

replicaof 127.0.0.1 6380 requirepass "hello world"

引号与转义规则

  • 对于包含空白的字符串,请使用 单引号双引号
  • 单引号字符串 中,可以用反斜杠(\)转义字符。
  • 双引号字符串 还支持使用反斜杠 + 十六进制表示 ASCII 符号,例如 "\xff"

完整指令列表请参考 Valkey 配置参考

命令行覆盖配置

所有配置指令也可以通过 命令行选项 传入。 格式与配置文件一致,不同之处在于每个关键字需要加上 -- 前缀。

示例: 启动一个端口为 6380 的副本实例,复制 127.0.0.1:6379 的主实例:

1engula-server --port 6380 --replicaof 127.0.0.1 6379

Engula 会将命令行参数与配置文件合并为 内存中的临时配置,从而保证 CLI 与文件指令的处理语义一致。

运行时配置变更

与 Valkey/Redis 一样,您可以在运行时查询与修改大多数配置项:

  • CONFIG GET <pattern>
  • CONFIG SET <parameter> <value>

注意事项

  • 并非所有指令 都支持运行时修改。
  • 运行时修改 不会自动写回 engula.conf
  • 如需持久化变更:
    • 手动编辑配置文件,或
    • 使用 CONFIG REWRITE 自动重写与当前配置不同的字段(保留注释、忽略未显式改动的默认值)。

将 Engula 用作缓存

Engula 可以配置为类似 Memcached 的 高性能内存缓存

示例(最大内存 2MB):

maxmemory 2mb maxmemory-policy allkeys-lru

在该配置下:

  • 达到内存上限后,会使用 近似 LRU 策略自动淘汰 key。
  • 应用 无需 为每个 key 显式设置 TTL(EXPIRE)。

更多缓存模式与淘汰策略,请参阅 Valkey 配置指南

Valkey/Redis 7.2 兼容性

Engula 在配置层面与 Valkey/Redis 7.2 保持 完整一致性

  • 相同的文件格式与指令关键字
  • 相同的命令行开关(以 -- 前缀表示)
  • CONFIG GETCONFIG SETCONFIG REWRITE 语义等价
  • 除非特别说明,默认值与行为与 Valkey 对齐

如有疑问,请以 Valkey 权威文档 为准。

Engula 专用配置项

以下指令为 Engula 专用占位项,用于未来扩展: 它们 不是 标准运行所必需,除非您的 Engula 构建版本明确支持,否则这些项 不会生效

配置项 说明
engula.feature_toggle_foo 内部特性开关占位。
engula.storage_engine 计划用于选择内部存储引擎后端。
engula.compaction_tuning 后台压缩(compaction)调参占位。
engula.observability.exporter 指标与日志输出目的地配置占位。
engula.threadpool.size 工作线程池大小配置占位。
engula.security.enclave_mode 计划用于启用更强的进程隔离能力。
engula.network.io_model 网络 I/O 驱动选择占位(如 epoll、io_uring)。

后续文档会补充这些配置项的语义、取值范围与默认参数。

最佳实践

  • 每个实例使用 独立的配置文件,避免端口、目录与日志冲突。
  • 启动后可通过以下命令核对关键配置:
    1CONFIG GET dir
    2CONFIG GET port
    3CONFIG GET logfile
  • 如需运行时调整配置,建议在重启前使用 CONFIG REWRITE 持久化变更。
  • 在容器化或自动化环境中:
    • engula.conf只读卷 挂载;
    • 通过命令行参数注入环境差异配置。

配置示例

最小单机实例

port 6379 dir /var/lib/engula logfile "/var/log/engula/engula.log"

作为主实例的副本

port 6380 replicaof 10.0.0.10 6379 dir /var/lib/engula-replica logfile "/var/log/engula/replica.log"

内存受限的缓存配置

maxmemory 1gb maxmemory-policy allkeys-lru appendonly no

总结

除 Engula 专用配置项外,其余配置指令、行为与默认值请参考 Valkey 官方文档:

📘 Valkey 配置文档

Engula 的配置体系对齐 Valkey/Redis 7.2,可为生产部署提供可预测的行为与低成本迁移体验。