最佳过期时间设定原则:对于频繁读少写的数据,设置较长过期时间如1小时到24小时;对于实时性强的用户数据,设置5-30分钟;动态计算过期时间=数据更新周期*1.5-2倍,避免缓存雪崩,使用随机偏移如EXPIRE key (ttl + random(0, ttl*0.1))。示例代码:SET user:info:123 "data" EX ttl 3600;使用pipeline批量设置提升性能。
来源1
在Redis中设置键的过期时间有两种方式,一种是expire命令,一种是在设置键值的时候直接指定过期时间,比如SET key value ex 10,就是10秒钟后过期。expire key seconds命令设置键的过期时间,如果设置了0秒,会立即删除键。并且如果键不存在,expire不会报错,只是返回0。使用pexpire可以设置毫秒级过期时间。
来源2
如何设定最佳过期时间?首先要根据业务数据特点分类:热点数据短TTL,冷数据长TTL;避免全量过期,使用TTL=数据冷热周期;防止缓存雪崩,加随机时间偏移,如TTL=600+rand(0,60)。监控命中率,如果低于80%,调低TTL或优化穿透策略。
来源3
Redis缓存过期时间设置不当会导致性能问题。最佳实践:1. 根据数据更新频率设置,读多写少设长些;2. 热点key单独管理短TTL;3. 结合内存使用率动态调整;4. 使用lazy free避免阻塞删除。代码示例:redis-cli SET cache:user:1 '{"name":"张三"}' EX 1800 NX。
来源4
提升性能的关键是合理TTL:用户session设20分钟,产品库存设5分钟,配置信息设1天。批量设置用pipeline:pipeline = r.pipeline(); pipeline.setex('key1', 3600, 'val1'); pipeline.setex('key2', 1800, 'val2'); pipeline.execute(); 减少RTT,提升吞吐。
来源5
解析存储时长:TTL太短增加后端压力,太长浪费内存。建议公式:TTL = 更新间隔 * 2 + 随机(0, 更新间隔)。监控命令:INFO keyspace查看过期统计,ttl key检查剩余时间。穿透防护:用布隆过滤器或空值缓存TTL短设1分钟。
来源6
实际案例:电商首页缓存设10分钟,避开整点高峰;用户偏好设1小时。性能提升30%通过TTL优化。注意lazyfree-lazy-expire yes配置,异步删除过期key不阻塞主线程。
FAQ
Q: Redis过期时间单位是什么?
A: EXPIRE用秒,PEXPIRE用毫秒。
Q: 如何避免缓存雪崩?
A: 设置不同key不同TTL,加随机偏移。
Q: TTL为-1什么意思?
A: 永不过期。
Q: 怎么批量设置过期时间?
A: 用pipeline多命令事务。