java—相当于使用redistemplate在spring boot中使用rediscli内存< key>

voase2hg  于 2021-06-07  发布在  Redis
关注(0)|答案(1)|浏览(406)

我目前正试图在我的spring boot应用程序中监视嵌入式redis使用的内存。我使用redistemplate找到了与“info memory”命令等效的命令,给出了一般的内存使用信息。但是,它没有找到一种方法来获得与键相关的更具体的内存使用信息,这相当于在redis cli中使用命令memory usgae。有没有一种方法可以使用redistemplate以编程方式获取这些信息?
我的桌面上没有本地安装的redis,我也没有自己安装的权限,所以我必须使用嵌入式redis。
致以最诚挚的问候,

bf1o4zei

bf1o4zei1#

redistemplate没有此api,可以使用 EVAL 命令以获取此的输出。
键和脚本

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));

相关问题