Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 相当于redis cli内存使用量<;键>;在Spring引导中使用redisTemplate_Java_Spring Boot_Redis_Spring Data Redis - Fatal编程技术网

Java 相当于redis cli内存使用量<;键>;在Spring引导中使用redisTemplate

Java 相当于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

我目前正试图在我的Spring Boot应用程序中监视嵌入式Redis使用的内存。我发现使用RedisTemplate相当于“info memory”命令,提供了一般内存使用信息。但是,它没有找到一种方法来获得与密钥相关的更具体的内存使用信息,这相当于在redis cli中使用命令memory USGAE。有没有办法使用RedisTemplate以编程方式获取此信息

我的桌面上没有本地安装的redis,我也没有自己安装的权限,这就是为什么我必须使用嵌入式redis


请注意,

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服务器是否支持此命令。