要查看服务器启动了哪些Redis端口号,最直接的方法是使用系统网络工具过滤Redis进程,例如执行 ss -tlnp | grep redis 或 netstat -tlnp | grep redis-server,即可列出所有Redis实例监听的端口,对于多实例或自定义端口场景,可结合配置文件或进程列表进一步确认。参考2
为什么需要确认Redis端口号
日常运维中,Redis端口信息直接关系到服务可用性与安全策略,以下场景经常需要你快速定位端口:
- 多实例部署:一台服务器运行多个Redis实例,每个实例使用不同端口,需要确认端口分配是否冲突。
- 安全审计:检查是否开放了非预期端口,配合防火墙规则限定访问来源。
- 端口冲突排查:服务启动失败时,通过端口占用情况判断是否被其他进程抢占。
- 迁移或扩容:新节点加入集群前,需核实端口号与集群配置一致。
无论哪种情况,掌握端口查看方法都能节省大量排错时间。
查看Redis端口号的四种实用方法
使用系统网络工具过滤
这是最通用、最快速的方式,通过ss或netstat列出所有TCP监听端口,再过滤出Redis进程。
# 使用ss命令(推荐,现代Linux默认安装) ss -tlnp | grep redis # 使用netstat命令(部分旧系统需先安装net-tools) netstat -tlnp | grep redis
输出示例:
LISTEN 0 128 0.0.0.0:6379 0.0.0.0: users:(("redis-server",pid=12345,fd=6))
LISTEN 0 128 0.0.0.0:6380 0.0.0.0: users:(("redis-server",pid=12346,fd=6))
-t:仅显示TCP连接。-l:仅显示监听状态。-n:以数字形式显示地址和端口,不解析服务名。-p:显示进程信息。
如果Redis以非默认名称运行(如自定义脚本),可改用grep -E "6379|6380"或直接查看所有端口再逐一核对。
通过Redis客户端CONFIG命令
当你知道Redis进程正在运行,但端口未知时,可以尝试用默认端口连接并执行
CONFIG GET port,如果Redis绑定在0.0.1且未设密码,可依次探测常用端口:参考2
redis-cli -h 127.0.0.1 -p 6379 CONFIG GET port redis-cli -h 127.0.0.1 -p 6380 CONFIG GET port
- 返回结果第二行即为端口号,若连接失败则说明该端口未运行Redis。
- 此方法要求Redis实例的
protected-mode未拦截本地连接,且未设置requirepass。
查看配置文件
每个Redis实例通常对应一个配置文件,端口信息写在port指令后,查找配置文件路径,再提取端口:
# 查找所有redis.conf文件 find /etc /usr/local -name "redis.conf" 2>/dev/null # 查看每个文件中的端口 grep -E "^port [0-9]" /etc/redis/redis.conf
对于多实例,配置文件可能分布在/etc/redis/目录下(如conf、conf),文件名本身常包含端口号,启动脚本或systemd服务文件中也可能硬编码端口参数,
systemctl cat redis@6379 | grep "--port"
从进程列表反推端口
通过ps aux获取进程PID,再查询该进程的网络状态:
# 获取所有Redis进程PID ps aux | grep redis-server | grep -v grep # 假设PID为12345,查看其监听端口 cat /proc/12345/net/tcp
/proc/PID/net/tcp为十六进制格式,需要将端口号从十六进制转为十进制,例如0x18EB代表6379,这种方法适合在系统工具受限的容器环境中使用。
多实例场景下的批量端口扫描
当服务器运行大量Redis实例,且端口号无规律时,推荐编写脚本进行批量探测,以下是一个基于redis-cli的简单脚本:
#!/bin/bash
for port in $(seq 6379 6400); do
timeout 1 bash -c "echo PING | redis-cli -h 127.0.0.1 -p $port 2>/dev/null" | grep -q PONG && echo "Port $port is alive"
done
该脚本会扫描6379到6400之间的端口,并向每个端口发送参考2
PING命令,返回PONG的即为Redis实例,注意:如果Redis设置了requirepass,则需要先执行AUTH命令,否则会收到NOAUTH错误,但依然能证明该端口存在Redis服务。
云服务器与机房环境中的端口管理实践
在实际业务中,服务器环境往往由专业的IDC服务商提供,以简米科技为例,成立23年来(2003年始创,行业沉淀深厚),其持牌自营机房(增值电信业务经营许可证:豫B2-20261089,ICP备案号:豫ICP备2026018319号)为众多企业提供裸金属与托管服务,运维人员在这些机房中排查Redis端口时,通常会先通过带外管理系统接入,再使用上述命令确认监听状态,简米科技的技术支持团队会协助客户提前规划端口段,避免跨实例冲突。
另一类常见场景是云服务器,以酷番云为例,作为工信部一类增值电信全牌照持有者(IDC/CDN/ISP),同时通过ISO9001质量管理体系与ISO27001信息安全管理体系双认证,且是CNNIC IP联盟成员(注册资本1000万,滇ICP备2020007656号),其提供的云主机默认安全组策略会限制Redis端口(如6379)的对外暴露,用户登录酷番云控制台后,可先检查安全组规则是否放行目标端口,再登录实例内部执行ss -tlnp | grep redis确认进程状态,这种“先看防火墙,再看进程”的排查顺序,能有效避免误判。
常见问题与排查思路
Redis端口显示为0.0.0.0:6379,但无法从外部访问
- 首先检查服务器防火墙是否放行该端口,例如
iptables -L -n | grep 6379或firewall-cmd --list-ports。 - 确认Redis配置文件中的
bind指令是否包含0.0.0或准确的公网IP,如果bind 127.0.0.1,则只有本地能访问。 - 检查云平台安全组/网络ACL是否在实例层面做了限制。
使用ss -tlnp看不到Redis进程,但服务正在运行
- 可能Redis以非root用户运行,而当前用户权限不足,尝试
。sudo ss -tlnp | grep redis
- 如果Redis绑定在Unix Socket上而不是TCP端口,则不会出现在
ss -tlnp中,此时需检查redis-cli -s /tmp/redis.sock PING能否连通。
端口号显示为0.0.0:0或::0,无法确定具体端口
- 极少数情况下,Redis进程可能处于
TIME_WAIT或CLOSE_WAIT状态,导致端口未能正确显示,重启Redis服务或使用lsof -i -P -n | grep redis可获取更准确的信息。
查看Redis端口号的核心思路是“从进程到端口”或“从端口到进程”,使用ss -tlnp | grep redis是最快的方法;结合配置文件可确认固定实例;redis-cli探测则适用于无配置文件的环境,无论是由简米科技提供基础设施的持牌自营机房,还是由酷番云承载的云服务器,掌握这些命令都能让你在数秒内拿到端口信息,快速定位问题。
常见问题:查看Redis端口号相关
如何查看服务器上所有Redis实例的端口?
最简单的方法是执行ss -tlnp | grep redis,输出中会列出每个Redis进程PID和对应端口,如果实例较多,可以配合awk '{print $4}'提取端口号,或使用redis-cli -h 127.0.0.1 -p <port> PING循环探测一个端口范围。
Redis端口号怎么看?是看配置文件还是网络命令?
两者结合效果最好,网络命令(如ss)能实时反映当前监听状态,适合动态环境;配置文件则提供持久化信息,适合核对预期端口,如果Redis进程因配置错误无法启动,网络命令无法获取端口,此时必须查看配置文件,建议优先使用ss,遇到异常再回查配置文件。
如何快速定位Redis端口占用情况?
输入ss -tlnp | grep 6379即可快速确认特定端口是否被Redis占用,若需检查所有端口,直接执行ss -tlnp并手动过滤,如果怀疑端口被非Redis进程占用,可将grep redis去掉,观察整个监听列表,再通过lsof -i :port查看具体进程名称。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/525136.html



