Java 相当于redis cli内存使用量<;键>;在Spring引导中使用redisTemplate
我目前正试图在我的Spring Boot应用程序中监视嵌入式Redis使用的内存。我发现使用RedisTemplate相当于“info memory”命令,提供了一般内存使用信息。但是,它没有找到一种方法来获得与密钥相关的更具体的内存使用信息,这相当于在redis cli中使用命令memory USGAE。有没有办法使用RedisTemplate以编程方式获取此信息 我的桌面上没有本地安装的redis,我也没有自己安装的权限,这就是为什么我必须使用嵌入式redisJava 相当于redis cli内存使用量<;键>;在Spring引导中使用redisTemplate,java,spring-boot,redis,spring-data-redis,Java,Spring Boot,Redis,Spring Data Redis,我目前正试图在我的Spring Boot应用程序中监视嵌入式Redis使用的内存。我发现使用RedisTemplate相当于“info memory”命令,提供了一般内存使用信息。但是,它没有找到一种方法来获得与密钥相关的更具体的内存使用信息,这相当于在redis cli中使用命令memory USGAE。有没有办法使用RedisTemplate以编程方式获取此信息 我的桌面上没有本地安装的redis,我也没有自己安装的权限,这就是为什么我必须使用嵌入式redis 请注意,RedisTempla
请注意,RedisTemplate没有此API,您可以使用
EVAL
命令获取此API的输出
键和脚本
String script = "return redis.pcall('MEMORY', 'USAGE', KEYS[1])";
String key = "test";
使用RedisConnectionUtils的简单方法
RedisConnection redisConnection =
RedisConnectionUtils.getConnection(redisTemplate.getConnectionFactory());
System.out.println(
(Long)
(redisConnection.eval(
script.getBytes(StandardCharsets.UTF_8),
ReturnType.INTEGER,
1,
key.getBytes(StandardCharsets.UTF_8))));
RedisConnectionUtils.releaseConnection(
redisConnection, redisTemplate.getConnectionFactory());
使用管道来获得相同的结果
System.out.println(
redisTemplate
.executePipelined(
(RedisCallback<Object>)
connection -> {
connection.eval(
script.getBytes(StandardCharsets.UTF_8),
ReturnType.INTEGER,
1,
jobsKey.getBytes(StandardCharsets.UTF_8));
return null;
})
.get(0));
System.out.println(
再贴现模板
.被执行者(
(重新调用)
连接->{
连接评估(
script.getBytes(StandardCharsets.UTF_8),
ReturnType.INTEGER,
1.
getBytes(StandardCharsets.UTF_8));
返回null;
})
.get(0));
您使用哪个版本的Spring?当我试图执行命令时,我得到了一个未知的脚本异常。我使用Spring Boot 2.2.8和Spring数据Moore-SR8。您能在PasteBin上共享完整的堆栈跟踪吗?我使用Spring 2.1.x。@MatJeg您是否错过了添加String script=“return redis.pcall('MEMORY','USAGE',KEYS[1])代码>在代码中?我添加了脚本,我有以下异常:redis.clients.jedis.exceptions.jedisdaetexception:@user_script:1:从Lua script调用的未知redis命令查看您的redis服务器是否支持此命令。