Java 面试题
目录

Redis 和 Java 结合使用中过期策略有哪些?

· 约 3 分钟读完 · 第 211 / 274 章

推荐答案

在 Redis 和 Java 结合使用中,常见的过期策略有以下几种:

  1. TTL(Time To Live):通过设置键的过期时间,Redis 会自动在指定时间后删除该键。Java 中可以通过 Jedis 或 Lettuce 等客户端库来设置和获取 TTL。

  2. 定期删除:Redis 会定期检查并删除过期的键。这种策略通过配置 hz 参数来控制检查的频率。

  3. 惰性删除:当客户端尝试访问一个键时,Redis 会检查该键是否已过期,如果过期则立即删除。这种策略可以减少不必要的内存占用。

  4. 内存淘汰策略:当 Redis 内存不足时,会根据配置的淘汰策略(如 LRU、LFU 等)删除一些键,以释放内存空间。

本题详细解读

TTL(Time To Live)

TTL 是 Redis 中最常用的过期策略。通过 EXPIRE 命令可以为键设置一个过期时间,单位为秒。Java 中可以通过 Jedis 或 Lettuce 等客户端库来设置和获取 TTL。例如:

定期删除

Redis 会定期检查并删除过期的键。这种策略通过配置 hz 参数来控制检查的频率。hz 参数的默认值为 10,表示每秒检查 10 次。可以通过修改 redis.conf 文件中的 hz 参数来调整检查频率。

惰性删除

惰性删除是指当客户端尝试访问一个键时,Redis 会检查该键是否已过期,如果过期则立即删除。这种策略可以减少不必要的内存占用,但可能会导致一些过期的键长时间未被删除。

内存淘汰策略

当 Redis 内存不足时,会根据配置的淘汰策略删除一些键,以释放内存空间。常见的淘汰策略包括:

  • LRU(Least Recently Used):删除最近最少使用的键。
  • LFU(Least Frequently Used):删除最不经常使用的键。
  • Random:随机删除键。
  • TTL:删除即将过期的键。

可以通过修改 redis.conf 文件中的 maxmemory-policy 参数来配置淘汰策略。例如:

在 Java 中,可以通过 Jedis 或 Lettuce 等客户端库来配置和监控 Redis 的内存使用情况。