// Package redis ... // // Description : redis ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2021-11-26 5:07 下午 package redis // FullServerInfo 获取服务器信息 // // Author : go_developer@163.com<白茶清欢> // // Date : 5:07 下午 2021/11/26 type FullServerInfo struct { ServerInfo *ServerInfo `json:"server_info"` ClientInfo *ClientInfo `json:"client_info"` } // ServerInfo 服务器信息 // // Author : go_developer@163.com<白茶清欢> // // Date : 5: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 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 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 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"` // 当前服务器频率 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 : 5: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 : 6: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"` // allocator_allocated AllocatorActive int64 `json:"allocator_active" yaml:"allocator_active"` // allocator_active AllocatorResident int64 `json:"allocator_resident" yaml:"allocator_resident"` // 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"` // 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 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 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 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"` // 延迟释放的对象数量 }