Redis过期密钥

问题描述 投票:0回答:1

我为我的玩家准备了一些排行榜的统计。排行榜有每日、每周和每月的统计。所以我在排行榜上使用了redis的过期功能,但是有一件事我想知道。有没有什么方法可以让密钥过期,但如果密钥已经过期,它就不会再去碰它。如果没有这个方法,有什么更有利于性能的方法来检查和设置?我有很多钥匙需要检查和设置,我不想拖慢这个过程。

编码

try (Jedis resource = redisManager.getResource()) {
    Pipeline pipeline = resource.pipelined();
    pipeline.multi();

    for (PlayerData playerData : playerDataList) {
        if (playerData.getKill() > 0) {
            pipeline.zincrby("game.kill.total", playerData.getKill(), playerData.getId());
            pipeline.zincrby("game.kill.monthly", playerData.getKill(), playerData.getId());
            pipeline.zincrby("game.kill.weekly", playerData.getKill(), playerData.getId());
        }
    }

    //if the key doesn't have expire date, add expire date to key.

    pipeline.exec();
}
java redis jedis leaderboard sortedset
1个回答
0
投票

如果你在Redis中的键是过期的,Redis会在内部处理,定期删除它们。 检查 公文

Redis exist API可以帮助检查密钥是否存在。doc 在Java中 Spring RedisTemplate hasKey API 可以帮助你。

处理Redis密钥的最佳做法是

  1. 检查密钥是否存在,如果存在,可能会过期或使用。
  2. 定值
  3. 设置过期时间。一定要设置到期时间,否则,你的Redis可能很快就会用完内存。

如果你在多线程中使用Redis,那就另当别论了。你必须使用Redis锁。

© www.soinside.com 2019 - 2024. All rights reserved.