redis/define.go

302 lines
28 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Package redis ...
//
// Description : redis ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-11-26 21:07 下午
package redis
// FullServerInfo 获取服务器信息
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 21:07 下午 2021/11/26
type FullServerInfo struct {
ServerInfo *ServerInfo `json:"server_info"`
ClientInfo *ClientInfo `json:"client_info"`
MemoryInfo *MemoryInfo `json:"memory_info"`
Persistence *Persistence `json:"persistence"`
Stats *Stats `json:"stats"`
Replication *Replication `json:"replication"`
CPU *CPU `json:"cpu"`
CommandStats []CmdStat `json:"command_stats"`
Keyspace []DB `json:"keyspace"`
Cluster *Cluster `json:"cluster"`
ErrorStats []Error `json:"error_stats"`
Modules interface{} `json:"modules"`
}
// ServerInfo 服务器信息
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 21:09 下午 2021/11/26
type ServerInfo struct {
RedisVersion string `json:"redis_version" yaml:"redis_version"` // Redis 服务器版本
RedisGitSha1 string `json:"redis_git_sha1" yaml:"redis_git_sha1"` // Git SHA1
RedisGitDirty string `json:"redis_git_dirty" yaml:"redis_git_dirty"` // Git dirty flag
RedisBuildID string `json:"redis_build_id" yaml:"redis_build_id"` // 构建ID
RedisMode string `json:"redis_mode" yaml:"redis_mode"` // 运行模式(“独立”,“哨兵”或“集群”)
OS string `json:"os" yaml:"os"` // Redis 服务器的宿主操作系统
ArchBits string `json:"arch_bits" yaml:"arch_bits"` // 架构32 或 64 位)
MultiplexingApi string `json:"multiplexing_api" yaml:"multiplexing_api"` // Redis 所使用的事件处理机制
AtomicvarApi string `json:"atomicvar_api" yaml:"atomicvar_api"` // 原子处理api
GCCVersion string `json:"gcc_version" yaml:"gcc_version"` // 编译 Redis 时所使用的 GCC 版本
ProcessID int `json:"process_id" yaml:"process_id"` // 服务器进程的 PID
ProcessSupervised string `json:"process_supervised" yaml:"process_supervised"` // 是否有进程监控
RunID string `json:"run_id" yaml:"run_id"` // Redis 服务器的随机标识符(用于 Sentinel 和集群)
TCPPort int `json:"tcp_port" yaml:"tcp_port"` // TCP/IP 监听端口
ServerTimeUsec int64 `json:"server_time_usec" yaml:"server_time_usec"` // 当前服务器时间,微秒
UptimeInSeconds int64 `json:"uptime_in_seconds" yaml:"uptime_in_seconds"` // 自 Redis 服务器启动以来,经过的秒数
UptimeInDays int64 `json:"uptime_in_days" yaml:"uptime_in_days"` // 自 Redis 服务器启动以来,经过的天数
Hz int64 `json:"hz" yaml:"hz"` // redis内部调度进行关闭timeout的客户端删除过期key等等频率程序规定serverCron每秒运行10次。
ConfiguredHz int64 `json:"configured_hz" yaml:"configured_hz"` // 服务器的频率设置
LRUClock int64 `json:"lru_clock" yaml:"lru_clock"` // 以秒为单位进行自增的时钟,用于 LRU 管理
Executable string `json:"executable" yaml:"executable"` // 可执行文件位置
ConfigFile string `json:"config_file" yaml:"config_file"` // 服务所使用的配置文件
IOThreadsActive int `json:"io_threads_active" yaml:"io_threads_active"` // 活跃的io线程数
}
// ClientInfo 客户端信息
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 21:29 下午 2021/11/26
type ClientInfo struct {
ConnectedClients int `json:"connected_clients" yaml:"connected_clients"` // 客户端连接数
ClusterConnections int `json:"cluster_connections" yaml:"cluster_connections"` // 集群连接数
MaxClients int `json:"maxclients" yaml:"max_clients"` // 最大客户端连接数
ClientRecentMaxInputBuffer int64 `json:"client_recent_max_input_buffer" yaml:"client_recent_max_input_buffer"` // 最近最大输入缓存
ClientRecentMaxOutputBuffer int64 `json:"client_recent_max_output_buffer" yaml:"client_recent_max_output_buffer"` // 最近最大输出缓存
BlockedClients int `json:"blocked_clients" yaml:"blocked_clients"` // 阻塞客户端数量, 正在等待阻塞命令BLPOP、BRPOP、BRPOPLPUSH的客户端的数量
TrackingClients int `json:"tracking_clients" yaml:"tracking_clients"` // tracking_clients
ClientsInTimeoutTable int `json:"clients_in_timeout_table" yaml:"clients_in_timeout_table"` // clients_in_timeout_table
}
// MemoryInfo 内存使用信息
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:08 下午 2021/11/26
type MemoryInfo struct {
UsedMemory int64 `json:"used_memory" yaml:"used_memory"` // 由 Redis 分配器分配的内存总量以字节byte为单位
UsedMemoryHuman string `json:"used_memory_human" yaml:"used_memory_human"` // UsedMemory 可读化表示
UsedMemoryRss int64 `json:"used_memory_rss" yaml:"used_memory_rss"` // 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。
UsedMemoryRssHuman string `json:"used_memory_rss_human" yaml:"used_memory_rss_human"` // UsedMemoryRssHuman 可读化表示
UsedMemoryPeak int64 `json:"used_memory_peak" yaml:"used_memory_peak"` // Redis 的内存消耗峰值(以字节为单位)
UsedMemoryPeakHuman string `json:"used_memory_peak_human" yaml:"used_memory_peak_human"` // UsedMemoryPeak 可读化表示
UsedMemoryPeakPerc string `json:"used_memory_peak_perc" yaml:"used_memory_peak_perc"` // 峰值系统内存使用率
UsedMemoryOverhead int64 `json:"used_memory_overhead" yaml:"used_memory_overhead"` // Redis为了维护数据集的内部机制所需的内存开销包括所有客户端输出缓冲区、查询缓冲区、AOF重写缓冲区和主从复制的backlog
UsedMemoryStartup int64 `json:"used_memory_startup" yaml:"used_memory_startup"` // Redis服务器启动时消耗的内存
UsedMemoryDataset int64 `json:"used_memory_dataset" yaml:"used_memory_dataset"` // 数据占用的内存大小即used_memory-used_memory_overhead
UsedMemoryDatasetPerc int64 `json:"used_memory_dataset_perc" yaml:"used_memory_dataset_perc"` // 数据占用的内存大小的百分比100%*(used_memory_dataset/(used_memory-used_memory_startup))
AllocatorAllocated int64 `json:"allocator_allocated" yaml:"allocator_allocated"` // 内存分配器申请的内存,以字节为单位
AllocatorActive int64 `json:"allocator_active" yaml:"allocator_active"` // 内存分配器正在使用的内存,以字节为单位
AllocatorResident int64 `json:"allocator_resident" yaml:"allocator_resident"` // 内存分配器的常驻内存,以字节为单位
TotalSystemMemory int64 `json:"total_system_memory" yaml:"total_system_memory"` // 操作系统内存(以字节为单位)
TotalSystemMemoryHuman string `json:"total_system_memory_human" yaml:"total_system_memory_human"` // TotalSystemMemory 可读化表示
UsedMemoryLua int64 `json:"used_memory_lua" yaml:"used_memory_lua"` // Lua脚本存储占用的内存以字节为单位
UsedMemoryLuaHuman int64 `json:"used_memory_lua_human" yaml:"used_memory_lua_human"` // UsedMemoryLua 可读化表示
UsedMemoryScripts int64 `json:"used_memory_scripts" yaml:"used_memory_scripts"` // Lua脚本使用的内存大小以字节为单位
UsedMemoryScriptsHuman int64 `json:"used_memory_scripts_human" yaml:"used_memory_scripts_human"` // UsedMemoryScripts 可读化表示
NumberOfCachedScripts int64 `json:"number_of_cached_scripts" yaml:"number_of_cached_scripts"` // 缓存的lua脚本数量
Maxmemory int64 `json:"maxmemory" yaml:"maxmemory"` // Redis实例的最大内存配置以字节为单位
MaxmemoryHuman int64 `json:"maxmemory_human" yaml:"maxmemory_human"` // Maxmemory 可读化表示
MaxmemoryPolicy string `json:"maxmemory_policy" yaml:"maxmemory_policy"` // 当数据达到最大内存之后的淘汰策略
AllocatorFragRatio float64 `json:"allocator_frag_ratio" yaml:"allocator_frag_ratio"` // 内存分配器碎片比例
AllocatorFragBytes int64 `json:"allocator_frag_bytes" yaml:"allocator_frag_bytes"` // 内存分配器碎片大小,以字节为单位
AllocatorRssRatio float64 `json:"allocator_rss_ratio" yaml:"allocator_rss_ratio"` // 从操作系统角度看, 内存分配器碎片比例
AllocatorRssBytes int64 `json:"allocator_rss_bytes" yaml:"allocator_rss_bytes"` // 从操作系统角度看, 内存分配器碎片大小,以字节为单位
RssOverheadRatio float64 `json:"rss_overhead_ratio" yaml:"rss_overhead_ratio"` // 从操作系统角度看, 开销的比例
RssOverheadBytes int64 `json:"rss_overhead_bytes" yaml:"rss_overhead_bytes"` // 从操作系统角度看, 开销的大小, 以字节为单位
MemFragmentationRatio float64 `json:"mem_fragmentation_ratio" yaml:"mem_fragmentation_ratio"` // 碎片率used_memory_rss/ used_memory正常情况下稍大于1。低于1Redis实例可能会把部分数据交换到硬盘上内存交换会严重影响Redis的性能所以应该增加可用物理内存。大于1.5表示碎片过多。额外碎片的产生是由于Redis释放了内存块但内存分配器并没有返回内存给操作系统这个内存分配器是在编译时指定的可以是libc、jemalloc或者tcmalloc。
MemFragmentationBytes int64 `json:"mem_fragmentation_bytes" yaml:"mem_fragmentation_bytes"` // 内存碎片大小(字节表示)
MemNotCountedForEvict int64 `json:"mem_not_counted_for_evict" yaml:"mem_not_counted_for_evict"` // 不应驱逐的内存大小,以字节为单位
MemReplicationBacklog int64 `json:"mem_replication_backlog" yaml:"mem_replication_backlog"` // 复制backlog的内存大小, 以字节为单位
MemClientsSlaves int64 `json:"mem_clients_slaves" yaml:"mem_clients_slaves"` // mem_clients_slaves
MemClientsNormal int64 `json:"mem_clients_normal" yaml:"mem_clients_normal"` // mem_clients_normal
MemAofBuffer int64 `json:"mem_aof_buffer" yaml:"mem_aof_buffer"` // AOF内存缓冲区大小
MemAllocator string `json:"mem_allocator" yaml:"mem_allocator"` // 内存分配器Redis支持glibcs malloc、jemalloc11、tcmalloc几种不同的内存分配器每个分配器在内存分配和碎片上都有不同的实现。不建议普通管理员修改Redis默认内存分配器因为这需要完全理解这几种内存分配器的差异也要重新编译Redis。
ActiveDefragRunning int64 `json:"active_defrag_running" yaml:"active_defrag_running"` // defrag:表示内存碎片整理, 0表示没有活动的defrag任务正在运行1表示有活动的defrag任务正在运行
LazyfreePendingObjects int64 `json:"lazyfree_pending_objects" yaml:"lazyfree_pending_objects"` // 延迟释放的挂起对象, 0表示不存在
LazyfreedObjects int64 `json:"lazyfreed_objects" yaml:"lazyfreed_objects"` // 延迟释放的对象数量
}
// Persistence 持久化信息
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:15 下午 2021/11/26
type Persistence struct {
Loading int `json:"loading" yaml:"loading"` // 服务器是否正在进行持久化 0 - 否 1 -是
CurrentCowSize int `json:"current_cow_size" yaml:"current_cow_size"` // current_cow_size
CurrentCowSizeAge int `json:"current_cow_size_age" yaml:"current_cow_size_age"` // current_cow_size_age
CurrentForkPerc float64 `json:"current_fork_perc" yaml:"current_fork_perc"` // current_fork_perc
CurrentSaveKeysProcessed int `json:"current_save_keys_processed" yaml:"current_save_keys_processed"` // current_save_keys_processed
CurrentSaveKeysTotal int64 `json:"current_save_keys_total" yaml:"current_save_keys_total"` // current_save_keys_total
RdbChangesSinceLastSave int64 `json:"rdb_changes_since_last_save" yaml:"rdb_changes_since_last_save"` // 离最近一次成功生成rdb文件写入命令的个数即有多少个写入命令没有持久化
RdbBgsaveInProgress int `json:"rdb_bgsave_in_progress" yaml:"rdb_bgsave_in_progress"` // 服务器是否正在创建rdb文件 0 - 否 1 - 是
RdbLastSaveTime int64 `json:"rdb_last_save_time" yaml:"rdb_last_save_time"` // 最近一次创建rdb文件的时间戳,单位秒
RdbLastBgsaveStatus string `json:"rdb_last_bgsave_status" yaml:"rdb_last_bgsave_status"` // 最近一次rdb持久化是否成功 ok 成功
RdbLastBgsaveTimeSec int64 `json:"rdb_last_bgsave_time_sec" yaml:"rdb_last_bgsave_time_sec"` // 最近一次成功生成rdb文件耗时秒数
RdbCurrentBgsaveTimeSec int64 `json:"rdb_current_bgsave_time_sec" yaml:"rdb_current_bgsave_time_sec"` // 如果服务器正在创建rdb文件那么这个字段记录的就是当前的创建操作已经耗费的秒数
RdbLastCowSize int64 `json:"rdb_last_cow_size" yaml:"rdb_last_cow_size"` // RDB过程中父进程与子进程相比执行了多少修改(包括读缓冲区,写缓冲区,数据修改等)。
AofEnabled int `json:"aof_enabled" yaml:"aof_enabled"` // 是否开启了AOF 0 - 否 1 - 是
AofRewriteInProgress int `json:"aof_rewrite_in_progress" yaml:"aof_rewrite_in_progress"` // 标识aof的rewrite操作是否在进行中 0 - 否 1- 是
AofRewriteScheduled int `json:"aof_rewrite_scheduled" yaml:"aof_rewrite_scheduled"` // rewrite任务计划当客户端发送bgrewriteaof指令如果当前rewrite子进程正在执行那么将客户端请求的bgrewriteaof变为计划任务待aof子进程结束后执行rewrite
AofLastRewriteTimeSec int `json:"aof_last_rewrite_time_sec" yaml:"aof_last_rewrite_time_sec"` // 最近一次aof rewrite耗费的时长
AofCurrentRewriteTimeSec int `json:"aof_current_rewrite_time_sec" yaml:"aof_current_rewrite_time_sec"` // 如果rewrite操作正在进行则记录所使用的时间单位秒
AofLastBgrewriteStatus string `json:"aof_last_bgrewrite_status" yaml:"aof_last_bgrewrite_status"` // 上次 bgrewrite aof 操作的状态 ok 成功
AofLastWriteStatus string `json:"aof_last_write_status" yaml:"aof_last_write_status"` // 上次aof写入状态
AofLastCowSize int64 `json:"aof_last_cow_size" yaml:"aof_last_cow_size"` // AOF过程中父进程与子进程相比执行了多少修改(包括读缓冲区,写缓冲区,数据修改等)
IOThreadedReadsProcessed int `json:"io_threaded_reads_processed" yaml:"io_threaded_reads_processed"` // 读取线程数
IOThreadedWritesProcessed int `json:"io_threaded_writes_processed" yaml:"io_threaded_writes_processed"` // 写入线程数
}
// Stats 服务运行状态
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:57 下午 2021/11/26
type Stats struct {
TotalConnectionsReceived int64 `json:"total_connections_received" yaml:"total_connections_received"` // 所有连接数, 累积值, 只增不减, 连接断开也不会减少
TotalCommandsProcessed int64 `json:"total_commands_processed" yaml:"total_commands_processed"` // 服务器执行的命令数 累积值, 只增不减
InstantaneousPpsPerSec int `json:"instantaneous_pps_per_sec" yaml:"instantaneous_pps_per_sec"` // 每秒执行的命令数
TotalNetInputBytes int64 `json:"total_net_input_bytes" yaml:"total_net_input_bytes"` // 网络流量-流入 以字节byte为单位
TotalNetOutputBytes int64 `json:"total_net_output_bytes" yaml:"total_net_output_bytes"` // 网络流量-流出 以字节byte为单位
InstantaneousInputKbps float64 `json:"instantaneous_input_kbps" yaml:"instantaneous_input_kbps"` // 网络流量-流入-KB/s
InstantaneousOutputKbps float64 `json:"instantaneous_output_kbps" yaml:"instantaneous_output_kbps"` // 网络流量-流出-KB/s
RejectedConnections int64 `json:"rejected_connections" yaml:"rejected_connections"` // 因达到最大连接数而被拒绝的连接数量
SyncFull int64 `json:"sync_full" yaml:"sync_full"` // 主从全量同步的次数
SyncPartialOk int64 `json:"sync_partial_ok" yaml:"sync_partial_ok"` // 主从部分同步成功的次数
SyncPartialErr int64 `json:"sync_partial_err" yaml:"sync_partial_err"` // 主从部分同步失败次数
ExpiredKeys int `json:"expired_keys" yaml:"expired_keys"` // 过期key的数量
ExpiredStalePerc float64 `json:"expired_stale_perc" yaml:"expired_stale_perc"` // 过期过时的百分比
ExpiredTimeCapReachedCount int64 `json:"expired_time_cap_reached_count" yaml:"expired_time_cap_reached_count"` // 过期时间达到上限的数量
ExpireCycleCpuMilliseconds int64 `json:"expire_cycle_cpu_milliseconds" yaml:"expire_cycle_cpu_milliseconds"` // 过期循环CPU毫秒数
EvictedKeys int64 `json:"evicted_keys" yaml:"evicted_keys"` // 超过 maxmemory 之后, 剔除的 key 的数量
KeyspaceHits int64 `json:"keyspace_hits" yaml:"keyspace_hits"` // 访问命中次数
KeyspaceMisses int64 `json:"keyspace_misses" yaml:"keyspace_misses"` // 访问未命中次数
PubsubChannels int64 `json:"pubsub_channels" yaml:"pubsub_channels"` // 当前频道数量 发布 - 订阅 模式
PubsubPatterns int64 `json:"pubsub_patterns" yaml:"pubsub_patterns"` // 当前使用中的模式数量
LatestForkUsec int64 `json:"latest_fork_usec" yaml:"latest_fork_usec"` // 最近一次fork 操作消耗的时间, 单位微秒
TotalForks int64 `json:"total_forks" yaml:"total_forks"` // fork 的总次数
MigrateCachedSockets int64 `json:"migrate_cached_sockets" yaml:"migrate_cached_sockets"` // 记录当前 Redis 正在 migrate 操作的目标 Redis 个数, 例如 A 向 B 和 C 执行 migrate操作, 这个值为2
SlaveExpiresTrackedKeys int64 `json:"slave_expires_tracked_keys" yaml:"slave_expires_tracked_keys"` // 从实例到期的 key 的数量
ActiveDefragHits int64 `json:"active_defrag_hits" yaml:"active_defrag_hits"` // 主动碎片整理命中次数
ActiveDefragMisses int64 `json:"active_defrag_misses" yaml:"active_defrag_misses"` // 主动碎片整理未命中次数
ActiveDefragKeyHits int64 `json:"active_defrag_key_hits" yaml:"active_defrag_key_hits"` // 主动整理碎片, key命中次数
ActiveDefragKeyMisses int64 `json:"active_defrag_key_misses" yaml:"active_defrag_key_misses"` // 主动整理碎片, key未命中次数
TrackingTotalKeys int64 `json:"tracking_total_keys" yaml:"tracking_total_keys"` // key 查询的总数
TrackingTotalItems int64 `json:"tracking_total_items" yaml:"tracking_total_items"` // item查询的总数
TrackingTotalPrefixes int64 `json:"tracking_total_prefixes" yaml:"tracking_total_prefixes"` // 前缀查询的总数
UnexpectedErrorReplies int64 `json:"unexpected_error_replies" yaml:"unexpected_error_replies"` // unexpected 异常响应次数
TotalErrorReplies int64 `json:"total_error_replies" yaml:"total_error_replies"` // 异常响应总次数
DumpPayloadSanitizations int64 `json:"dump_payload_sanitizations" yaml:"dump_payload_sanitizations"` // dump_payload_sanitizations
TotalReadsProcessed int64 `json:"total_reads_processed" yaml:"total_reads_processed"` // 正在读取的请求数
TotalWritesProcessed int64 `json:"total_writes_processed" yaml:"total_writes_processed"` // 正在写入的请求数
IOThreadedReadsProcessed int64 `json:"io_threaded_reads_processed" yaml:"io_threaded_reads_processed"` // 正在读取的线程数
IOThreadedWritesProcessed int64 `json:"io_threaded_writes_processed" yaml:"io_threaded_writes_processed"` // 正在写入的线程数
}
// Replication 复制相关
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:42 上午 2021/11/27
type Replication struct {
Role string `json:"role" yaml:"role"` // 节点的角色 master / slave
ReplBacklogActive int `json:"repl_backlog_active" yaml:"repl_backlog_active"` // 复制缓冲区是否开启 0 - 未开启 1 - 已开启
ReplBacklogSize int64 `json:"repl_backlog_size" yaml:"repl_backlog_size"` // 复制缓冲区大小(以字节为单位)
ReplBacklogFirstByteOffset int64 `json:"repl_backlog_first_byte_offset" yaml:"repl_backlog_first_byte_offset"` // 复制缓冲区里偏移量的大小
ReplBacklogHistlen int64 `json:"repl_backlog_histlen" yaml:"repl_backlog_histlen"` // 此值等于 master_repl_offset - repl_backlog_first_byte_offset,该值不会超过repl_backlog_size的大小
ConnectedSlaves int `json:"connected_slaves" yaml:"connected_slaves"` // 仅主节点属性 : 连接的从节点数量
MasterFailoverState string `json:"master_failover_state" yaml:"master_failover_state"` // 仅主节点 : 故障转移状态 no-failover 无故障转移
MasterReplid string `json:"master_replid" yaml:"master_replid"` // 仅主节点 : 实例启动的随机字符串
MasterReplid2 string `json:"master_replid2" yaml:"master_replid2"` // 仅主节点 : 实例启动的随机字符串2
MasterReplOffset int64 `json:"master_repl_offset" yaml:"master_repl_offset"` // 仅主节点 : 主从同步偏移量
SecondReplOffset int64 `json:"second_repl_offset" yaml:"second_repl_offset"` // 仅主节点 : 主从同步偏移量2
MasterHost string `json:"master_host" yaml:"master_host"` // 仅从节点 : 主节点host
MasterPort int `json:"master_port" yaml:"master_port"` // 仅从节点 : 主节点端口
MasterLinkStatus string `json:"master_link_status" yaml:"master_link_status"` // 仅从节点 : 与主节点连接状态 up - 正常连接 down - 断开
MasterLastIOSecondsAgo int `json:"master_last_io_seconds_ago" yaml:"master_last_io_seconds_ago"` // 仅从节点 : 主节点与从节点最后通信的时间间隔, 单位: s
MasterSyncInProgress int `json:"master_sync_in_progress" yaml:"master_sync_in_progress"` // 仅从节点 : 从节点是否正在全量同步主节点rdb文件 0 - 否 1 - 是
SlaveReplOffset int64 `json:"slave_repl_offset" yaml:"slave_repl_offset"` // 仅从节点 : 复制偏移量
SlavePriority int `json:"slave_priority" yaml:"slave_priority"` // 仅从节点 : 从节点优先级
SlaveReadOnly int `json:"slave_read_only" yaml:"slave_read_only"` // 仅从节点 : 从节点是否只读 0 - 否 1 - 是
SlaveList []SlaveNode `json:"slave_list" yaml:"slave_list"` // 从节点列表
}
// SlaveNode 从库数据结构,基于原始数据解析 eg : slave0:ip=x.x.x.x,port=6379,state=online,offset=123456,lag=1
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 1:51 上午 2021/11/27
type SlaveNode struct {
ID string `json:"id" yaml:"id"` // 从库ID
IP string `json:"ip" yaml:"ip"` // 从库IP
Port int `json:"port" yaml:"port"` // 从库端口
State string `json:"state" yaml:"state"` // 从库状态 online - 在线 offline - 离线
Offset int64 `json:"offset" yaml:"offset"` // 数据偏移量
Lag int64 `json:"lag" yaml:"lag"` // 数据延迟量大小
}
// CPU 信息
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 1:54 上午 2021/11/27
type CPU struct {
UsedCpuSys float64 `json:"used_cpu_sys" yaml:"used_cpu_sys"` // Redis主进程在内核态所占用CPU时钟总和
UsedCpuUser float64 `json:"used_cpu_user" yaml:"used_cpu_user"` // Redis主进程在用户态所占用CPU时钟总和
UsedCpuSysChildren float64 `json:"used_cpu_sys_children" yaml:"used_cpu_sys_children"` // Redis子进程在内核态所占用CPU时钟总和
UsedCpuUserChildren float64 `json:"used_cpu_user_children" yaml:"used_cpu_user_children"` // Redis子进程在用户态所占用CPU时钟总和
}
// CmdStat 指令状态 eg : cmdstat_get:calls=1,usec=42121,usec_per_call=42121.00,rejected_calls=0,failed_calls=0
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:02 上午 2021/11/27
type CmdStat struct {
Cmd string `json:"cmd" yaml:"cmd"` // 执行的指令
Calls int64 `json:"calls" yaml:"calls"` // 执行了多少次
TotalUsedTime float64 `json:"total_used_time" yaml:"total_used_time"` // 累计总耗时 微秒
AvgUsedTime float64 `json:"avg_used_time" yaml:"avg_used_time"` // 平均耗时 微秒
RejectedCalls int64 `json:"rejected_calls" yaml:"rejected_calls"` // 拒绝执行指令次数
FailedCalls int64 `json:"failed_calls" yaml:"failed_calls"` // 指令执行失败次数
SuccessCalls int64 `json:"success_calls" yaml:"success_calls"` // 指令执行成功次数 Calls - FailedCalls
}
// DB 数据库的数据结构, eg : db0:keys=3,expires=0,avg_ttl=0
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:09 上午 2021/11/27
type DB struct {
Name string `json:"name" yaml:"name"` // 数据库名称
Keys int64 `json:"keys" yaml:"keys"` // 数据库key的数量
Expires int64 `json:"expires" yaml:"expires"` // 数据库过期key的数量
AvgTTL int64 `json:"avg_ttl" yaml:"avg_ttl"` // 平均存活时间
}
// Cluster ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:13 上午 2021/11/27
type Cluster struct {
ClusterEnabled int `json:"cluster_enabled" yaml:"cluster_enabled"` // 是否启用 0 - 否 1 - 是
}
// Error 错误的状态 eg : errorstat_WRONGTYPE:count=4615
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2:16 上午 2021/11/27
type Error struct {
Type string `json:"type" yaml:"type"` // 错误类型
Count int64 `json:"count" yaml:"count"` // 错误出现次数
}