Redis 缓存加速:哪些该缓存哪些不该
Redis 能显著降低数据库压力,但它引入了新的复杂度:数据一致性。
装与配
# 面板:软件商店搜 Redis 安装
# 命令行:
sudo apt install redis-server
sudo systemctl enable --now redis-server
PHP 侧需要 redis 扩展:
pecl install redis
# 然后在 php.ini 加 extension=redis.so
装好之后在后台「插件 → Redis 缓存器」里填连接信息并启用。
:::danger 一定要设密码 Redis 默认无密码且监听所有网卡。公网服务器上这等于把数据库敞开。
# redis.conf
requirepass 你的强密码
bind 127.0.0.1
:::
该缓存什么
| 数据 | 缓存 | 理由 |
|---|---|---|
| 商品分类树 | ✅ | 极少变,读取极频繁 |
| 站点配置 | ✅ | 同上 |
| 商品列表 | ✅ 短时 | 变化有限,设 60 秒即可 |
| 商品库存 | ❌ | 必须实时,缓存会超卖 |
| 订单状态 | ❌ | 必须实时 |
| 用户余额 | ❌ | 涉及金钱,绝不缓存 |
原则很简单:读多写少的缓存,涉及金额和库存的不缓存。
「改了不生效」怎么办
这是缓存最常见的副作用。改了后台配置,前台还是旧的。
redis-cli -a 你的密码 FLUSHDB
或者在后台的缓存管理里点「清空缓存」。
:::tip 开发时先关掉 调试期间缓存会让你怀疑人生——不确定是代码没生效还是缓存没刷。开发环境直接关掉 Redis 缓存最省心。 :::
内存策略
Redis 内存满了的行为由 maxmemory-policy 决定:
maxmemory 512mb
maxmemory-policy allkeys-lru
allkeys-lru 表示内存不够时淘汰最久未使用的键。别用默认的 noeviction——那会导致写入直接失败,如果会话也存在 Redis 里,全站会掉登录。
效果验证
redis-cli -a 密码 INFO stats | grep keyspace
看 keyspace_hits 和 keyspace_misses 的比例。命中率低于 80% 说明缓存策略需要调整——可能是过期时间太短,或者缓存了不该缓存的东西。
评论 0