当你跟 Redis 说喜欢 Mia,结果它居然帮你存了啥奇怪的数据
- 问答
- 2026-01-17 10:04:35
- 1
整理自网络用户分享的Redis使用经历)

那天下午我闲得发慌,决定拿本地开发的Redis数据库做点无聊实验,我在终端敲下redis-cli,突然想到刚看完电影《爱乐之城》,顺手输入了SET 喜欢 Mia——本来想表达对女主角的喜爱,结果手快忘了输值就直接回车了,Redis居然回复了个OK,把我给看懵了。

查资料才知道(参考《Redis设计与实现》),Redis的SET命令如果没写value,会把默认的空字符串存进去,我赶紧用GET 喜欢查了下,果然返回了(nil),但用KEYS *一看,真的有个键叫"喜欢",这时候我室友伸头问了句:"你数据库里存了个'喜欢'是啥意思?"场面一度非常尴尬。

更绝的是,第二天我用SCAN命令扫键列表时,这个孤零零的"喜欢"混在一堆正经的用户数据里,像极了误入数学公式的情书,运维同事检查内存时还特意跑来问:"你这个键值对的值怎么是空的?要不要清理掉?"(据知乎某运维工程师案例)
后来翻官方文档发现(Redis 7.0命令手册),这种操作其实会产生内存浪费,虽然空值只占很少空间,但键名本身会占用内存,比如汉字"喜欢"在UTF-8编码下占6字节,加上Redis内部数据结构开销,这个看似无意义的操作可能消耗了快30字节内存,要是频繁这样操作,就像往抽屉里塞无数张空白纸条还挨个贴标签。
最戏剧性的是两周后,我写脚本用DUMP命令做数据迁移,这个"喜欢"键居然跟着正经业务数据一起被打包进了rdb文件,部署到测试环境时,新来的实习生盯着监控面板惊呼:"这个持久化文件里有个中文键名一直读不到值!"直到我红着脸解释这是测试数据,团队群里瞬间被"Redis暗恋Mia实锤"的表情包刷屏。
这件事的后遗症是,现在每次代码评审看到有人写SET命令,同事都会开玩笑:"检查下值别漏了,不然Redis又要帮你表白。"(源自团队内部Git记录注释)而那个神秘的"喜欢"键,至今还留在公司的开发环境数据库里,成了我们组著名的数字时代乌龙情书。
本文由召安青于2026-01-17发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/82345.html
