- 版权类型
- 原创
- 插件中文名称
- RedisPlayers
- 插件英文名称
- RedisPlayers
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Folia
- Purpur
- 语言支持
- 中文(简体)
- 前置组件
- PlaceholderAPI+https://www.spigotmc.org/resources/placeholderapi.6245/
- 适配版本(Java)
- 最新版本
- 26.x
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.15
- 1.14
- 1.13
- 1.12
- 1.11
- 1.10
- 1.9
- 1.8
- 1.7
基于 RedisBungee 的跨服在线人数统计插件 | Jedis + Pipeline 高性能查询
本插件为 KKCraft 自用的跨服人数统计插件,现 KKCraft 已永久关闭。
发布此插件,希望能帮助一些有需要的人,为社区做贡献。后续将发布更多 KKCraft 相关的插件以及源码。
本人将不再开服,非插件问题请勿联系。
⚙ 工作流程
连接 Redis — 插件启动时通过 Jedis 连接池连接到 RedisBungee 所使用的 Redis 实例
扫描代理 — 使用 SCAN 命令遍历所有 BungeeCord 代理节点的在线玩家集合,避免 KEYS 阻塞
批量查询 — 通过 Pipeline 批量获取每位玩家所在的子服务器,按 1000 人一批分批处理
统计汇总 — 将各服务器人数汇总,按配置文件中的服务器组进行分组统计
缓存更新 — 定时异步刷新缓存(默认每 200 tick),通过 PlaceholderAPI 变量对外提供数据
代码:
%sgc_global%
代码:
%sgc_group_组名%
代码:
%sgc_server_服务器名%
示例:
代码:
%sgc_group_起床战争%
- Jedis 连接池 — 基于 JedisPool 管理连接,支持自定义连接池大小、空闲检测,高并发下稳定高效
- Pipeline 批量查询 — 将数百上千次 Redis 请求合并为批量管道操作,大幅减少网络往返开销
- SCAN 替代 KEYS — 使用增量式 SCAN 遍历 key,避免 KEYS 命令在大数据量下阻塞 Redis
- 分批处理 — 玩家数据按 1000 人一批分批 Pipeline,防止单次管道过大导致内存峰值
- ConcurrentHashMap 缓存 — 线程安全的内存缓存,PAPI 变量读取零锁竞争
- 异步刷新 — 所有 Redis 查询在异步线程执行,不阻塞主线程,零 TPS 影响
代码:
/sb reload
命令别名:
代码:
/sb
代码:
RedisPlayers.admin
YAML:
# Redis 连接配置
redis:
host: localhost
port: 6379
password: ''
pool-size: 2 # 连接池大小
network-id: main # RedisBungee 的 network-id
# 缓存刷新间隔(单位:tick,20tick = 1秒)
cache-interval: 200
# 调试模式
debug: false
# 服务器组配置:组名 -> 子服务器列表
groups:
生存服:
- survival_1
- survival_2
小游戏:
- minigame_lobby
- bedwars_1
- bedwars_2
# PAPI 变量用法:
# %sgc_global% - 获取全服总人数(所有BC上的玩家)
# %sgc_group_起床战争% - 获取组内总人数
# %sgc_server_服务器名% - 获取单个服务器人数(任意服务器,无需配置)
- RedisBungee(必须,插件读取其 Redis 数据)
- PlaceholderAPI(可选,提供 PAPI 变量支持)
- Redis 服务器
🛡 安全检测
插件无后门无病毒,VirusTotal 安全审核结果:
插件交流群:908213883
有问题群内反馈,将会很快得到回复解决问题。