上一篇
📢 最新动态(2025年8月)
Redis 7.4 刚刚发布!新版本优化了内存管理和过期键的删除效率,对于需要高频读写并自动清理数据的场景(比如临时缓存、验证码存储),性能提升了15%~20%!
想象一下这些场景:
手动删除?太麻烦!Redis 的 原子性操作 能帮你一键搞定!
GETDEL
+ 过期时间GETDEL
命令(Redis 6.2+)# 写入数据(带10分钟过期时间) SET temp:order:1234 "订单数据" EX 600 # 读取并原子性删除 GETDEL temp:order:1234
✅ 优点:
⚠️ 注意:
nil
且不报错 如果需要更复杂的逻辑(比如删除前校验),可以用 Lua 脚本保证原子性:
-- 脚本:读取并删除,同时返回剩余TTL local value = redis.call('GET', KEYS[1]) if value then redis.call('DEL', KEYS[1]) return {value, redis.call('TTL', KEYS[1])} end
调用示例:
EVAL "脚本内容" 1 temp:key
SET
+ EXPIRE
组合如果不想用 Lua,可以这样“曲线救国”:
# 写入时直接设过期时间 SET session:abc "用户数据" EX 3600 # 读取后用 `DEL` 主动删除(非原子性,但简单) GET session:abc DEL session:abc
# Python 示例(使用 redis-py) import redis r = redis.Redis() # 发送验证码时 r.set("sms:13800138000", "648395", ex=180) # 3分钟过期 # 校验验证码时 correct_code = r.getdel("sms:13800138000") if user_input == correct_code: print("验证成功!")
# 领取优惠券时(24小时有效) SET coupon:user_456 "DISCOUNT30" EX 86400 # 使用优惠券时(原子性消耗) GETDEL coupon:user_456
GETDEL
可能阻塞其他请求,建议拆分成小数据。 SCAN
+ TTL
定期检查是否有未自动删除的残留数据。 PIPELINE
打包多个 GETDEL
减少网络延迟 volatile-lru
淘汰策略 🎉 总结
Redis 的 GETDEL
和过期策略是“用完即删”需求的完美搭档!根据你的 Redis 版本和场景复杂度,选择最适合的方案,轻松实现高效又安全的数据管理~
ℹ️ 本文测试基于 Redis 7.4,部分命令在旧版本可能需要替代方案。
本文由 淳于倚 于2025-08-04发表在【云服务器提供商】,文中图片由(淳于倚)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://up.7tqx.com/wenda/534335.html
发表评论