我为我的玩家准备了一些排行榜的统计。排行榜有每日、每周和每月的统计。所以我在排行榜上使用了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();
}
如果你在Redis中的键是过期的,Redis会在内部处理,定期删除它们。 检查 公文
Redis exist
API可以帮助检查密钥是否存在。doc 在Java中 Spring RedisTemplate hasKey API 可以帮助你。
处理Redis密钥的最佳做法是
如果你在多线程中使用Redis,那就另当别论了。你必须使用Redis锁。