参数列表
Module:
Categories:
Pigsty 中有 21 个关于 Redis 模块的配置参数:
参数 | 类型 | 级别 | 注释 |
---|---|---|---|
redis_cluster |
string | C | Redis数据库集群名称,必选身份参数 |
redis_instances |
dict | I | Redis节点上的实例定义 |
redis_node |
int | I | Redis节点编号,正整数,集群内唯一,必选身份参数 |
redis_fs_main |
path | C | Redis主数据目录,默认为 /data |
redis_exporter_enabled |
bool | C | Redis Exporter 是否启用? |
redis_exporter_port |
port | C | Redis Exporter监听端口 |
redis_exporter_options |
string | C/I | Redis Exporter命令参数 |
redis_safeguard |
bool | G/C/A | 禁止抹除现存的Redis |
redis_clean |
bool | G/C/A | 初始化Redis是否抹除现存实例 |
redis_rmdata |
bool | G/C/A | 移除Redis实例时是否一并移除数据? |
redis_mode |
enum | C | Redis集群模式:sentinel,cluster,standalone |
redis_conf |
string | C | Redis配置文件模板,sentinel 除外 |
redis_bind_address |
ip | C | Redis监听地址,默认留空则会绑定主机IP |
redis_max_memory |
size | C/I | Redis可用的最大内存 |
redis_mem_policy |
enum | C | Redis内存逐出策略 |
redis_password |
password | C | Redis密码,默认留空则禁用密码 |
redis_rdb_save |
string[] | C | Redis RDB 保存指令,字符串列表,空数组则禁用RDB |
redis_aof_enabled |
bool | C | Redis AOF 是否启用? |
redis_rename_commands |
dict | C | Redis危险命令重命名列表 |
redis_cluster_replicas |
int | C | Redis原生集群中每个主库配几个从库? |
redis_sentinel_monitor |
master[] | C | Redis哨兵监控的主库列表,只在哨兵集群上使用? |
默认参数
Redis 模块的默认参数定义于 roles/redis/defaults/main.yml
#redis_cluster: <集群> # Redis数据库集群名称,必选身份参数
#redis_node: 1 <节点> # Redis节点上的实例定义
#redis_instances: {} <节点> # Redis节点编号,正整数,集群内唯一,必选身份参数
redis_fs_main: /data # Redis主数据目录,默认为 `/data`
redis_exporter_enabled: true # Redis Exporter 是否启用?
redis_exporter_port: 9121 # Redis Exporter监听端口
redis_exporter_options: '' # Redis Exporter命令参数
redis_safeguard: false # 禁止抹除现存的Redis
redis_clean: true # 初始化Redis是否抹除现存实例
redis_rmdata: true # 移除Redis实例时是否一并移除数据?
redis_mode: standalone # Redis集群模式:sentinel,cluster,standalone
redis_conf: redis.conf # Redis配置文件模板,sentinel 除外
redis_bind_address: '0.0.0.0' # Redis监听地址,默认留空则会绑定主机IP
redis_max_memory: 1GB # Redis可用的最大内存
redis_mem_policy: allkeys-lru # Redis内存逐出策略
redis_password: '' # Redis密码,默认留空则禁用密码
redis_rdb_save: ['1200 1'] # Redis RDB 保存指令,字符串列表,空数组则禁用RDB
redis_aof_enabled: false # Redis AOF 是否启用?
redis_rename_commands: {} # Redis危险命令重命名列表
redis_cluster_replicas: 1 # Redis原生集群中每个主库配几个从库?
redis_sentinel_monitor: [] # Redis哨兵监控的主库列表,只在哨兵集群上使用
redis_cluster
参数名称: redis_cluster
, 类型: string
, 层次:C
身份参数,必选参数,必须显式在集群层面配置,将用作集群内资源的命名空间。
需要遵循特定命名规则:[a-z][a-z0-9-]*
,以兼容不同约束对身份标识的要求,建议使用redis-
作为集群名前缀。
redis_node
参数名称: redis_node
, 类型: int
, 层次:I
Redis节点序列号,身份参数,必选参数,必须显式在节点(Host)层面配置。
自然数,在集群中应当是唯一的,用于区别与标识集群内的不同节点,从0或1开始分配。
redis_instances
参数名称: redis_instances
, 类型: dict
, 层次:I
当前 Redis 节点上的 Redis 实例定义,必选参数,必须显式在节点(Host)层面配置。
内容为JSON KV对象格式。Key为数值类型端口号,Value为该实例特定的JSON配置项。
redis-test: # redis native cluster: 3m x 3s
hosts:
10.10.10.12: { redis_node: 1 ,redis_instances: { 6379: { } ,6380: { } ,6381: { } } }
10.10.10.13: { redis_node: 2 ,redis_instances: { 6379: { } ,6380: { } ,6381: { } } }
vars: { redis_cluster: redis-test ,redis_password: 'redis.test' ,redis_mode: cluster, redis_max_memory: 32MB }
每一个Redis实例在对应节点上监听一个唯一端口,实例配置项中replica_of
用于设置一个实例的上游主库地址,构建主从复制关系。
redis_instances:
6379: {}
6380: { replica_of: '10.10.10.13 6379' }
6381: { replica_of: '10.10.10.13 6379' }
redis_fs_main
参数名称: redis_fs_main
, 类型: path
, 层次:C
Redis使用的主数据盘挂载点,默认为/data
,Pigsty会在该目录下创建redis
目录,用于存放Redis数据。
所以实际存储数据的目录为 /data/redis
,该目录的属主为操作系统用户 redis
,内部结构详情请参考 FHS:Redis
redis_exporter_enabled
参数名称: redis_exporter_enabled
, 类型: bool
, 层次:C
是否启用Redis监控组件 Redis Exporter?
默认启用,在每个Redis节点上部署一个,默认监听 redis_exporter_port
9121
端口。所有本节点上 Redis 实例的监控指标都由它负责抓取。
redis_exporter_port
参数名称: redis_exporter_port
, 类型: port
, 层次:C
Redis Exporter监听端口,默认值为:9121
redis_exporter_options
参数名称: redis_exporter_options
, 类型: string
, 层次:C/I
传给 Redis Exporter 的额外命令行参数,会被渲染到 /etc/defaut/redis_exporter
中,默认为空字符串。
redis_safeguard
参数名称: redis_safeguard
, 类型: bool
, 层次:G/C/A
Redis的防误删安全保险开关:打开后无法使用剧本抹除正在运行的 Redis 实例。
默认值为 false
,如果设置为 true
,那么当剧本遇到正在运行的 Redis 实例时,会中止初始化/抹除的操作,避免误删。
redis_clean
参数名称: redis_clean
, 类型: bool
, 层次:G/C/A
Redis清理开关:是否在初始化的过程中抹除运行中的Redis实例?默认值为:true
。
剧本 redis.yml
会在执行时抹除具有相同定义的现有 Redis 实例,这样可以保证剧本的幂等性。
如果您不希望 redis.yml
这样做,可以将此参数设置为 false
,那么当剧本遇到正在运行的 Redis 实例时,会中止初始化/抹除的操作,避免误删。
如果安全保险参数 redis_safeguard
已经打开,那么本参数的优先级低于该参数。
redis_rmdata
参数名称: redis_rmdata
, 类型: bool
, 层次:G/C/A
移除 Redis 实例的时候,是否一并移除 Redis 数据目录?默认为 true
。
数据目录包含了 Redis 的 RDB与AOF文件,如果不抹除它们,那么新拉起的 Redis 实例将会从这些备份文件中加载数据。
redis_mode
参数名称: redis_mode
, 类型: enum
, 层次:C
Redis集群的工作模式,有三种选项:standalone
, cluster
, sentinel
,默认值为 standalone
standalone
:默认,独立的Redis主从模式cluster
: Redis原生集群模式sentinel
:Redis高可用组件:哨兵
当使用standalone
模式时,Pigsty会根据 replica_of
参数设置Redis主从复制关系。
当使用cluster
模式时,Pigsty会根据 redis_cluster_replicas
参数使用所有定义的实例创建原生Redis集群。
redis_conf
参数名称: redis_conf
, 类型: string
, 层次:C
Redis 配置模板路径,Sentinel除外。
默认值:redis.conf
,这是一个模板文件,位于 roles/redis/templates/redis.conf
。
如果你想使用自己的 Redis 配置模板,你可以将它放在 templates/
目录中,并设置此参数为模板文件名。
注意: Redis Sentinel 使用的是另一个不同的模板文件,即 roles/redis/templates/redis-sentinel.conf
。
redis_bind_address
参数名称: redis_bind_address
, 类型: ip
, 层次:C
Redis服务器绑定的IP地址,空字符串将使用配置清单中定义的主机名。
默认值:0.0.0.0
,这将绑定到此主机上的所有可用 IPv4 地址。
在生产环境中出于安全性考虑,建议仅绑定内网 IP,即将此值设置为空字符串 ''
redis_max_memory
参数名称: redis_max_memory
, 类型: size
, 层次:C/I
每个 Redis 实例使用的最大内存配置,默认值:1GB
。
redis_mem_policy
参数名称: redis_mem_policy
, 类型: enum
, 层次:C
Redis 内存回收策略,默认值:allkeys-lru
,
noeviction
:内存达限时不保存新值:当使用主从复制时仅适用于主库allkeys-lru
:保持最近使用的键;删除最近最少使用的键(LRU)allkeys-lfu
:保持频繁使用的键;删除最少频繁使用的键(LFU)volatile-lru
:删除带有真实过期字段的最近最少使用的键volatile-lfu
:删除带有真实过期字段的最少频繁使用的键allkeys-random
:随机删除键以为新添加的数据腾出空间volatile-random
:随机删除带有过期字段的键volatile-ttl
:删除带有真实过期字段和最短剩余生存时间(TTL)值的键。
详情请参阅Redis内存回收策略。
redis_password
参数名称: redis_password
, 类型: password
, 层次:C/N
Redis 密码,空字符串将禁用密码,这是默认行为。
注意,由于 redis_exporter 的实现限制,您每个节点只能设置一个 redis_password
。这通常不是问题,因为 pigsty 不允许在同一节点上部署两个不同的 Redis 集群。
请在生产环境中使用强密码
redis_rdb_save
参数名称: redis_rdb_save
, 类型: string[]
, 层次:C
Redis RDB 保存指令,使用空列表则禁用 RDB。
默认值是 ["1200 1"]
:如果最近20分钟至少有1个键更改,则将数据集转储到磁盘。
详情请参考 Redis持久化。
redis_aof_enabled
参数名称: redis_aof_enabled
, 类型: bool
, 层次:C
启用 Redis AOF 吗?默认值是 false
,即不使用 AOF。
redis_rename_commands
参数名称: redis_rename_commands
, 类型: dict
, 层次:C
重命名 Redis 危险命令,这是一个 k:v 字典:old: new
,old是待重命名的命令名称,new是重命名后的名字。
默认值:{}
,你可以通过设置此值来隐藏像 FLUSHDB
和 FLUSHALL
这样的危险命令,下面是一个例子:
{
"keys": "op_keys",
"flushdb": "op_flushdb",
"flushall": "op_flushall",
"config": "op_config"
}
redis_cluster_replicas
参数名称: redis_cluster_replicas
, 类型: int
, 层次:C
在 Redis 原生集群中,应当为一个 Master/Primary 实例配置多少个从库?默认值为: 1
,即每个主库配一个从库。
redis_sentinel_monitor
参数名称: redis_sentinel_monitor
, 类型: master[]
, 层次:C
Redis哨兵监控的主库列表,只在哨兵集群上使用。每个待纳管的主库定义方式如下所示:
redis_sentinel_monitor: # primary list for redis sentinel, use cls as name, primary ip:port
- { name: redis-src, host: 10.10.10.45, port: 6379 ,password: redis.src, quorum: 1 }
- { name: redis-dst, host: 10.10.10.48, port: 6379 ,password: redis.dst, quorum: 1 }
其中,name
,host
是必选参数,port
,password
,quorum
是可选参数,quorum
用于设置判定主库失效所需的法定人数数,通常大于哨兵实例数的一半(默认为1)。