用 SQLite 做缓存层:个人站点不必上 Redis
AI 摘要
个人站点缓存层可用 SQLite 替代 Redis,通过封装 kv 表实现缓存,适用于读多写少的数据,响应时间可提升至四十毫秒。SQLite 在简单场景下适用,故障面小。
由 AI 生成,仅供参考
三月初站点稳定了,开始看响应时间。首页每次打开都要查五张表:导航、公告、友链、统计、最新文章。都是小查询,加起来也就两三百毫秒,但能省为什么不省。
第一反应是上 Redis。服务器是 2 核 2G 的便宜货,多跑一个常驻进程就少吃一块内存,而且我得再学一套运维。
后来用了 SQLite。一张 kv 表,三个方法,几十行封装:get、set、remember。remember 最常用,缓存未命中就回调生成再写入,调用方不用管命中与否。
导航、公告、一言这些读多写少的数据全部走它,TTL 三十分钟。响应时间从三百毫秒降到四十毫秒。
三个细节值得记。过期清理不能靠读取时顺手删,要单独跑;查不到的数据也要缓存一个短时效的空值,不然穿透;上游接口挂了的时候,缓存里最后一份成功结果比报错有用,单独留一个更长的兜底。
什么时候该换 Redis?需要按前缀批量失效上千个键、需要多机共享、需要队列和锁的时候。
在那之前,SQLite 够用,故障面还小。
评论(1)
登录后才能发表评论。去登录 →
https://www.dinonode.org/blog/article/?slug=p4
—— admin