当前位置:首页 > AI技术 > 正文内容

Redis 如何处理空对象缓存导致的空间爆满|Duuu笔记

admin6天前AI技术12

空对象缓存更吃内存因每个空key含40+字节开销及淘汰策略失效;禁用SET key "" EX 60;应采用布隆过滤器预判存在性+短TTL空值缓存。

空对象缓存为什么比想象中更吃内存

直接缓存

null

或空字符串(如

""

{}

)本身不占多少空间,但问题出在“量”和“生命周期”上:每个空值都对应一个独立的

key

,而 Redis 的 key 本身有开销(至少 40+ 字节),加上过期时间字段、dictEntry 结构、以及可能的碎片化,10 万个空 key 就可能额外吃掉 5–10MB 内存。更麻烦的是,这些 key 很少被访问,LRU/LFU 淘汰策略几乎不会动它们——因为“没被用过”,所以不会被判定为“最近最少用”或“最不常用”。

别用

SET key "" EX 60

填坑

这是最常见的错误操作:查数据库没结果,就执行

SET user:123 "" EX 60

。它看似解决了穿透,实则埋下三个雷:

空值 key 无法被

allkeys-lru

allkeys-lfu

淘汰(除非你主动删)

volatile-lru

虽然能淘汰,但前提是所有空 key 都带了

EX

;一旦漏设,就永久驻留

业务代码里反复判断

if (value == null || value.equals(""))

,逻辑臃肿还易错

真正靠谱的替代方案:布隆过滤器 + 精确过期

布隆过滤器(Bloom Filter)不是用来存数据的,而是快速回答“这个 key 绝对不存在吗?”。它用极小内存(比如 100 万 key 只需 2MB)拦截 99% 的无效查询,让空值根本进不了缓存层。

实操要点:

白瓜AI

白瓜AI,一个免费图文AI创作工具,支持 AI 仿写,图文生成,敏感词检测,图片去水印等等。

下载

初始化阶段,把所有**可能存在的有效 key 前缀或 ID 全集**(如用户 ID、商品 SKU)一次性加载进布隆过滤器(推荐用 RedisBloom 模块或本地 Guava BloomFilter 同步到 Redis)

读取前先查

BF.EXISTS users_filter 123

,返回

0

就直接跳过 Redis 和 DB,不写任何空缓存

只对**确认存在但当前无数据**的场景(如刚注册还没填资料的用户),才写空对象,且必须带短 TTL(如

SETEX user:123:profile "" 30

),并确保该 key 命名可被扫描清理(如加

:profile

后缀)

补救:已经塞了一堆空 key 怎么快速清

别手动

KEYS *

—— 会阻塞 Redis。用安全扫描命令:

redis-cli --scan --pattern "user:*:" | grep -E ':\{\}|"\"\"|:null$' | xargs -r redis-cli DEL

如果不确定哪些是空值,先采样检查:

SCAN 0 MATCH user:* COUNT 100

拿一批 key

对每个 key 执行

GET key

,看返回是否为

(nil)

或空字符串

确认后批量删除,避免单条

DEL

太慢

真正难的不是删,而是下次上线前把布隆过滤器和空值 TTL 策略固化进 DAO 层——否则运维清完,开发一发版又回来。

相关文章

什么是LLM?看这一篇就够了!

一、全套AGI大模型学习路线 AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能! 二、640套AI大模型报告合集 这套包含640份报告的合集,涵盖了AI大...

神经网络分类总结

从网络性能角度可分为连续型与离散型网络、确定性与随机性网络。 从网络结构角度可为前向网络与反馈网络。 从学习方式角度可分为有导师学习网络和无导师学习网络。 按连续突触性...

推荐10个AI人工智能技术网站

除了研究和开发人工智能技术,OpenAI还积极参与人工智能伦理和安全的研究和探讨。 认为,人工智能技术的发展必须遵循伦理和法律的规范,以确保人工智能的应用不会对人类带来负面影响。...

一文讲清神经网络、BP神经网络、深度学习的关系

人工神经网络中的顶级代表。往往说《神经网络》就是指《BP神经网络》。 大家研究着各种神经网络,研究得不亦乐乎, 来了两个家伙Romelhart 和Mcclelland,...

什么是人工智能 ?

您可以使用 ML 训练 AI,使其精确、快速地执行任务。这可以通过自动化员工感到吃力或厌烦的业务部分来提高运营效率。同样,您可以使用 AI 自动化来腾出员工资源,用于更复杂和更具创造性的工作。...

从入门到精通:前端开发之骡子快跑支持热点借势吗 骡子快跑节日营销文案生成|Duuu笔记

骡子快跑平台提供五步节日营销文案生成路径:一、调用内置32个节日模板库;二、输入热点事件触发动态生成;三、绑定自有素材库实现个性化延展;四、多角色视角协同输出;五、接入微信生态直发并校验合规性。 ☞...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。