用 SQLite 做缓存层:个人站点不必上 Redis

用 SQLite 做缓存层:个人站点不必上 Redis

AI 摘要

个人站点缓存层可用 SQLite 替代 Redis,通过封装 kv 表实现缓存,适用于读多写少的数据,响应时间可提升至四十毫秒。SQLite 在简单场景下适用,故障面小。

由 AI 生成,仅供参考

三月初站点稳定了,开始看响应时间。首页每次打开都要查五张表:导航、公告、友链、统计、最新文章。都是小查询,加起来也就两三百毫秒,但能省为什么不省。

第一反应是上 Redis。服务器是 2 核 2G 的便宜货,多跑一个常驻进程就少吃一块内存,而且我得再学一套运维。

后来用了 SQLite。一张 kv 表,三个方法,几十行封装:get、set、remember。remember 最常用,缓存未命中就回调生成再写入,调用方不用管命中与否。

导航、公告、一言这些读多写少的数据全部走它,TTL 三十分钟。响应时间从三百毫秒降到四十毫秒。

三个细节值得记。过期清理不能靠读取时顺手删,要单独跑;查不到的数据也要缓存一个短时效的空值,不然穿透;上游接口挂了的时候,缓存里最后一份成功结果比报错有用,单独留一个更长的兜底。

什么时候该换 Redis?需要按前缀批量失效上千个键、需要多机共享、需要队列和锁的时候。

在那之前,SQLite 够用,故障面还小。

相关文章

分享 微博 X TG .md
字体 字号

评论(1)

登录后才能发表评论。去登录 →

admin6 小时前
《用 SQLite 做缓存层:个人站点不必上 Redis》
https://www.dinonode.org/blog/article/?slug=p4
—— admin