Redis 如果设置键过期?
可以通过 expire 或 pexpire 命令,客户端可以以秒或毫秒的精度为数据库中的某个键设置生存时间。
与 expire 和 pexpire 命令类似,客户端通过 expireat 和 pexpireat 命令,以秒或毫秒精度给数据库中的某个键设置过期时间。
Redis 有哪些过期删除策略?
过期策略主要有三种:
- 定时过期:每个设置过期时间的 key 都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好,但会大量占用 CPU 资源,影响 Redis 的响应速度和吞吐量。
- 惰性删除:只有当访问一个 key 时,才去判断该 key 是否已经过期,过期则清除。此策略最大化地节省 CPU 资源,但对内存非常不友好。极端情况下可能出现大量过期的 key 没有被再次访问,从而不被清除,占用大量内存。
- 定期过期:对惰性删除进行优化,每个一段时间,会扫描 Redis 中所有的 key,相当于都访问一遍,访问时就会去判断此 key 是否过期。该策略是前两者的一个折中方案,通过调整定时扫描的时间间隔和每次扫描的耗时,可以在不同情况下使得 CPU 和内存资源达到最优的平衡效果。