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

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

admin2个月前 (04-01)AI技术49

空对象缓存更吃内存因每个空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介绍

。LLM 被证明在使用指令形式化描述的未见过的任务上表现良好。这意味着 LLM 能够根据任务指令执行任务,而无需事先见过具体示例,展示了其强大的泛化能力。 :小型语言模型通常难以解决涉...

神经网络中的单层神经网络

神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。人脑中的神经网络是一个非常复杂的组织。成人的大脑中估计有1000亿个神经元之多。 看一个经典的神经网络。这是一个包...

几种主要的神经网络

卷积神经网络的输入为二维的像素整阵列,输出为这个图片的属性,当网络训练学习后,所输入的图片或许经过稍微的变换,但卷积神经网络还是可以通过识别图片局部的特征而将整个图片识别出来。 :该层...

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

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

深入理解前端开发:Minimax 视频生成中负面提示词(Negative Prompt)写法完全指南|Duuu笔记

Minimax视频生成中负面提示词需用英文、逗号分隔,支持权重调节(如(blurry:1.3)),按构图/主体/画质/风格四类精简选取,禁用not/no/中文及违规词,须通过A/B测试验证有效性。...

从入门到精通:前端开发之Minimax视频生成硬件要求 Minimax对手机电脑配置要求|Duuu笔记

MiniMax视频生成问题多因硬件不兼容或性能不足,需按设备类型满足对应配置:手机端需Android 10+/iOS 15.0+及指定芯片;电脑端重浏览器版本与GPU驱动;本地API调用需i5-840...

发表评论

访客

看不清,换一张

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