@ -4,45 +4,55 @@
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-11-26 5 :07 下午
// Date : 2021-11-26 21 :07 下午
package redis
// FullServerInfo 获取服务器信息
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5 :07 下午 2021/11/26
// 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 : 5 :09 下午 2021/11/26
// 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" json :"redis_git_dirty" ` // Git dirty flag
RedisBuildID string ` json:"redis_build_id" json :"redis_build_id" ` // 构建ID
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" ` // atomicvar_ api
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" ` // server_time_usec
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" ` // 当前服务器频率
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 管理
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线程数
@ -52,7 +62,7 @@ type ServerInfo struct {
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 5 :29 下午 2021/11/26
// 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" ` // 集群连接数
@ -68,7 +78,7 @@ type ClientInfo struct {
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 6 :08 下午 2021/11/26
// 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 可读化表示
@ -81,9 +91,9 @@ type MemoryInfo struct {
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" ` // allocator_allocated
AllocatorActive int64 ` json:"allocator_active" yaml:"allocator_active" ` // allocator_active
AllocatorResident int64 ` json:"allocator_resident" yaml:"allocator_resident" ` // allocator_resident
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脚本存储占用的内存( 以字节为单位)
@ -94,21 +104,198 @@ type MemoryInfo struct {
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" ` // allocator_frag_ratio
AllocatorFragBytes int64 ` json:"allocator_frag_bytes" yaml:"allocator_frag_bytes" ` // allocator_frag_bytes
AllocatorRssRatio float64 ` json:"allocator_rss_ratio" yaml:"allocator_rss_ratio" ` // allocator_rss_ratio
AllocatorRssBytes int64 ` json:"allocator_rss_bytes" yaml:"allocator_rss_bytes" ` // allocator_rss_bytes
RssOverheadRatio float64 ` json:"rss_overhead_ratio" yaml:"rss_overhead_ratio" ` // rss_overhead_ratio
RssOverheadBytes int64 ` json:"rss_overhead_bytes" yaml:"rss_overhead_bytes" ` // rss_overhead_bytes
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。低于1, Redis实例可能会把部分数据交换到硬盘上, 内存交换会严重影响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" ` // mem_not_counted_for_evict
MemReplicationBacklog int64 ` json:"mem_replication_backlog" yaml:"mem_replication_backlog" ` // mem_replication_backlog
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" ` // mem_aof_buffer
MemAofBuffer int64 ` json:"mem_aof_buffer" yaml:"mem_aof_buffer" ` // AOF内存缓冲区大小
MemAllocator string ` json:"mem_allocator" yaml:"mem_allocator" ` // 内存分配器, Redis支持glibc’ s 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" ` // 错误出现次数
}