查看redis占用内存大小以及其他运行信息

本文介绍了如何通过登录Redis客户端并使用`info`命令,特别是关注`Memory`部分,来查看Redis服务所占用的内存大小,从而了解Redis的运行状态。

查看redis占用内存大小

登陆redis客户端,info一下

127.0.0.1:6379> info
# Server
redis_version:4.0.11	# Redis 服务器版本
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:cac07eeaa8b0c409
redis_mode:standalone
os:Linux 2.6.32-696.16.1.el6.x86_64 x86_64  # 服务器的宿主操作系统
arch_bits:64	# 架构(32 或 64 位)
multiplexing_api:epoll # Redis 所使用的事件处理机制
atomicvar_api:sync-builtin
gcc_version:4.4.7 # 编译 Redis 时所使用的 GCC 版本
process_id:1095 # 服务器进程的 PID
run_id:0df26c28a26e44d99805398a96763030d7b17233 # Redis 服务器的随机标识符(用于 Sentinel 和集群)
tcp_port:6379 # TCP/IP 监听端口
uptime_in_seconds:17480541 # 自 Redis 服务器启动以来,经过的秒数
uptime_in_days:202 # 自 Redis 服务器启动以来,经过的天数
hz:10
lru_clock:16465298 # 以分钟为单位进行自增的时钟,用于 LRU 管理
executable:/home/shangqu/app/redis/bin/redis-server #服务所在路径
config_file:/etc/redis/6379.conf # 配置文件所在路径

# Clients
connected_clients:5 # 已连接客户端的数量(不包括通过从属服务器连接的客户端)
client_longest_output_list:0 #当前连接的客户端当中,最长的输出列表
client_biggest_input_buf:0 #当前连接的客户端当中,最大输入缓存
blocked_clients:0 # 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量

# Memory
used_memory:1139652 # 由 Redis 分配器分配的内存总量,以字节(byte)为单位
used_memory_human:1.09M # 以人类可读的格式返回 Redis 分配的内存总量
used_memory_rss:3112960 # 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。
used_memory_rss_human:2.97M #以人类可读的格式返回 Redis 已分配的内存总量
used_memory_peak:3220197 # Redis 的内存消耗峰值(以字节为单位)
used_memory_peak_human:3.07M #以人类可读的格式返回 Redis 的内存消耗峰值
used_memory_peak_perc:35.39%  #使用内存达到峰值内存的百分比
used_memory_overhead:975339  #Redis为了维护数据集的内部机制所需的内存开销,包括所有客户端输出缓冲区、查询缓冲区
used_memory_startup:852589   #Redis服务器启动时消耗的内存
used_memory_dataset:164313  #数据占用的内存大小
used_memory_dataset_perc:57.24%  #数据占用的内存大小的百分比
total_system_memory:8389816320    #宿主机总内存
total_system_memory_human:7.81G  #以人类可读的格式返回 宿主机总内存
used_memory_lua:37888  # 引擎所使用的内存大小(以字节为单位)
used_memory_lua_human:37.00K #以人类可读的格式返回 引擎所使用的内存大小
maxmemory:0   #Redis实例的最大内存配置
maxmemory_human:0B  #以更直观的可读格式显示Redis实例的最大内存配置
maxmemory_policy:noeviction   #当达到maxmemory时的淘汰策略
mem_fragmentation_ratio:2.73 #内存的碎片率
mem_allocator:libc  #在编译时指定的, Redis 所使用的内存分配器
active_defrag_running:0  #表示没有活动的defrag任务正在运行,1表示有活动的defrag任务正在运行(defrag:表示内存碎片整理)
lazyfree_pending_objects:0  #表示redis执行lazy free操作,在等待被实际回收内容的键个数

# Persistence  RDB 和 AOF 的相关信息
loading:0
rdb_changes_since_last_save:56   # 自上次dump后rdb的改动
rdb_bgsave_in_progress:0  # 标识rdb save是否进行中
rdb_last_save_time:1576746256   # 上次save的时间戳
rdb_last_bgsave_status:ok   # 上次的save操作状态
rdb_last_bgsave_time_sec:0    # 上次rdb save操作使用的时间(单位s)
rdb_current_bgsave_time_sec:-1   # 如果rdb save操作正在进行,则是所使用的时间
rdb_last_cow_size:438272
aof_enabled:0   # 是否开启aof,默认没开启
aof_rewrite_in_progress:0    # 标识aof的rewrite操作是否在进行中
aof_rewrite_scheduled:0   # 标识是否将要在rdb save操作结束后执行
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:0

# Stats
total_connections_received:191931   # 自启动起连接过的总数
total_commands_processed:31037809  # 自启动起运行命令的总数
instantaneous_ops_per_sec:0    # 每秒执行的命令个数
total_net_input_bytes:9349729145
total_net_output_bytes:44069429125
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0  # 因为最大客户端连接书限制,而导致被拒绝连接的个数
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:22981
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0
keyspace_hits:23219157
keyspace_misses:16889
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:220
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0

# Replication
role:master   # 角色
connected_slaves:0    # 连接的从库数
master_replid:241513050b30388b7614abfca91c5aa515082c54
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:5025.26
used_cpu_user:3139.29
used_cpu_sys_children:17.27
used_cpu_user_children:41.15

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=66,expires=63,avg_ttl=26041741

重点关注Memory

# Memory
used_memory:1139652 # 由 Redis 分配器分配的内存总量,以字节(byte)为单位
used_memory_human:1.09M # 以人类可读的格式返回 Redis 分配的内存总量
used_memory_rss:3112960 # 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。
used_memory_rss_human:2.97M #以人类可读的格式返回 Redis 已分配的内存总量
used_memory_peak:3220197 # Redis 的内存消耗峰值(以字节为单位)
used_memory_peak_human:3.07M #以人类可读的格式返回 Redis 的内存消耗峰值
used_memory_peak_perc:35.39%  #使用内存达到峰值内存的百分比
used_memory_overhead:975339  #Redis为了维护数据集的内部机制所需的内存开销,包括所有客户端输出缓冲区、查询缓冲区
used_memory_startup:852589   #Redis服务器启动时消耗的内存
used_memory_dataset:164313  #数据占用的内存大小
used_memory_dataset_perc:57.24%  #数据占用的内存大小的百分比
total_system_memory:8389816320    #宿主机总内存
total_system_memory_human:7.81G  #以人类可读的格式返回 宿主机总内存
used_memory_lua:37888  # 引擎所使用的内存大小(以字节为单位)
used_memory_lua_human:37.00K #以人类可读的格式返回 引擎所使用的内存大小
maxmemory:0   #Redis实例的最大内存配置
maxmemory_human:0B  #以更直观的可读格式显示Redis实例的最大内存配置
maxmemory_policy:noeviction   #当达到maxmemory时的淘汰策略
mem_fragmentation_ratio:2.73 #内存的碎片率
mem_allocator:libc  #在编译时指定的, Redis 所使用的内存分配器
active_defrag_running:0  #表示没有活动的defrag任务正在运行,1表示有活动的defrag任务正在运行(defrag:表示内存碎片整理)
lazyfree_pending_objects:0  #表示redis执行lazy free操作,在等待被实际回收内容的键个数

### 查看 Redis 内存使用情况的方法 在 Linux 环境下,可以通过多种方式来检查 Redis 的内存使用情况。以下是几种常用方法: #### 方法一:通过 `INFO` 命令获取 Redis 内部统计信息 Redis 提供了一个内置命令 `INFO`,它可以返回关于 Redis 实例的各种运行状态数据。其中,`used_memory` 和 `used_memory_rss` 是两个重要的字段。 - **`used_memory`** 表示 Redis 分配器分配的内存量(字节单位),这是 Redis 自身报告的内存消耗[^1]。 - **`used_memory_rss`** 则表示进程实际使用的物理内存大小(驻留集大小)。这个值通常会大于或等于 `used_memory`,因为操作系统的内存管理机制可能导致部分已释放的内存未被立即回收。 执行以下命令可以从客户端连接到 Redis 并查询其内存使用状况: ```bash redis-cli INFO memory ``` 此命令将输出详细的内存相关信息,例如最大内存限制 (`maxmemory`)、峰值内存使用量 (`used_memory_peak`) 等。 --- #### 方法二:利用操作系统工具监控 Redis 进程 除了依赖于 Redis 自己提供的统计数据外,还可以借助外部工具直接观察 Redis 运行时所占有的资源。 ##### 使用 `ps` 命令查看单个进程的内存占用率 下面这条指令能够展示指定 PID 对应的 Redis 服务当前占据了多少虚拟地址空间以及常驻内存数量: ```bash ps aux | grep redis-server ``` 或者更精确地定位某特定实例: ```bash ps -o pid,user,%mem,rss,command -C redis-server --sort=-rss | head -n 1 ``` 上述代码片段中的 `%mem` 字段代表该程序相对于总 RAM 容量的比例;而 `RSS`(Resident Set Size)则对应的是真正加载入主存储器的部分[^3]。 --- #### 方法三:调整系统参数影响 Redis 内存行为 有时为了更好地控制 Redis 如何处理大对象或是频繁变动的数据集合,有必要调节某些 Linux 内核级别的设置项比如 `vm.overcommit_memory` 参数。当将其设定为 1 时,意味着允许过度承诺(over-committing),即使没有足够的可用页面也依旧批准新的请求直到真的耗尽为止——这可能会减少因 OOM killer 而突然终止的风险但在极端情况下也可能引发其他问题[^2]。 要改变此项配置可编辑 `/etc/sysctl.conf` 文件并加入如下一行然后再重新加载生效即可: ```bash echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf && sysctl -p ``` 注意这种改动仅适用于特殊场景下的性能调优不应随意更改生产环境默认值除非完全理解后果。 --- ### 总结 综上所述,在 Linux 中有三种主要途径用于评估 Redis 的内存消费水平:一是依靠内部 API 获取精准数值;二是运用通用诊断手段像 top 或者 htop 来概览全局负载分布;最后则是深入探索底层架构特性从而实现精细化治理策略[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值