键空间管理:过期策略与淘汰机制
引言 前面我们学习了Redis的5大数据类型,知道如何存储数据。但有一个关键问题: Redis的内存是有限的,数据会一直增长,内存满了怎么办? 这就涉及到两个核心机制: 过期策略:如何删除过期的键? 淘汰策略:内存不足时,删除哪些键? 理解这两个机制,是使用Redis的必修课。 一、为什么需要过期机制? 1.1 内存是有限的 假设你有一台8GB内存的Redis服务器: 缓存用户Session:每个100KB,1万在线用户 = 1GB 缓存商品详情:每个50KB,10万商品 = 5GB 缓存热点数据:2GB 总需求:1GB + 5GB + 2GB = 8GB(刚刚好) 但是: Session如果不过期,用户越来越多,内存会爆 过期商品不删除,占用空间 临时缓存不清理,内存泄漏 结论:必须有过期机制自动清理。 1.2 过期时间的设置 EXPIRE命令族: # EXPIRE:设置秒级过期时间 127.0.0.1:6379> SET session:abc123 "user:1001" OK 127.0.0.1:6379> EXPIRE session:abc123 3600 (integer) 1 # 1小时后过期 # EXPIREAT:设置到某个时间戳过期 127.0.0.1:6379> EXPIREAT session:abc123 1735689600 (integer) 1 # PEXPIRE:设置毫秒级过期时间 127.0.0.1:6379> PEXPIRE cache:hot 5000 (integer) 1 # 5秒后过期 # PEXPIREAT:毫秒级时间戳 127.0.0.1:6379> PEXPIREAT cache:hot 1735689600000 (integer) 1 # SET命令直接设置过期时间(推荐) 127.0.0.1:6379> SET cache:data "value" EX 60 OK 127.0.0.1:6379> SETEX cache:data 60 "value" OK 查看过期时间: ...