Apache Ignite 2.15.0:ignitevisor.sh cache命令的替代方案咨询
Apache Ignite 2.15.0 查看缓存列表及元素数量方法
一、使用control.sh工具
ignitevisor.sh被弃用后,control.sh提供了对应的缓存操作命令,需分步骤执行:
- 查看所有缓存列表:执行以下命令
./control.sh --cache list - 查看单个缓存的元素数量:指定缓存名称执行
./control.sh --cache size <缓存名称> - 批量获取所有缓存大小:结合Shell脚本遍历缓存列表,一次性输出所有缓存的大小,示例脚本:
#!/bin/bash CACHES=$(./control.sh --cache list | grep -v "Cache names:" | tr -d ' ') for CACHE in $CACHES; do SIZE=$(./control.sh --cache size $CACHE) echo "缓存 $CACHE 的元素数量:$SIZE" done
关于control.sh的反射警告
你遇到的非法反射访问警告,是因为Ignite 2.15.0在Java 9及以上版本运行时,内部反射操作触发了Java模块系统的限制,该警告不影响功能正常使用。若要消除警告,可修改control.sh脚本,在IGNITE_JVM_OPTS中添加以下参数:
IGNITE_JVM_OPTS="$IGNITE_JVM_OPTS --add-opens java.base/java.nio=ALL-UNNAMED"
二、使用REST API
如果集群开启了REST服务(默认端口8080),可通过HTTP请求获取缓存信息:
- 获取缓存列表:
curl "http://<节点IP>:8080/ignite?cmd=getcaches" - 获取单个缓存大小:
curl "http://<节点IP>:8080/ignite?cmd=cachesize&cacheName=<缓存名称>"
注意:Docker部署时需确保容器8080端口已映射到宿主机。
三、通过代码或Web Console
- Java代码方式:编写客户端代码连接集群,遍历缓存并统计大小:
import org.apache.ignite.Ignite; import org.apache.ignite.Ignition; public class CacheSizeChecker { public static void main(String[] args) { try (Ignite ignite = Ignition.start()) { ignite.cacheNames().forEach(cacheName -> { long size = ignite.cache(cacheName).size(); System.out.println("缓存 " + cacheName + " 的元素数量:" + size); }); } } } - Ignite Web Console:若部署了Web Console,可通过可视化界面直接查看所有缓存的基本信息及元素数量。
内容的提问来源于stack exchange,提问作者BHBV
相关产品推荐
相关产品推荐

