在引入 Redis 緩存後,如何快速驗證業務邏輯正確性、排查緩存不一致問題?本文分享兩種零成本、高效率的調試手法。
在 Service 層增加配置開關,臨時繞過 Redis 直接查 DB:
@Service
public class UserService {
@Value("${redis.bypass:false}") // 配置中心/應用配置控制
private boolean redisBypass;
public User getUser(Long id) {
if (!redisBypass) {
User cached = redisTemplate.opsForValue().get("user:" + id);
if (cached != null) return cached;
}
// 直連 DB
User user = userMapper.selectById(id);
if (!redisBypass && user != null) {
redisTemplate.opsForValue().set("user:" + id, user, 30, TimeUnit.MINUTES);
}
return user;
}
}
優點: 不重啟應用(配置中心動態刷新)、不污染生產代碼、可精確控制粒度(類/方法/租戶)。
# 登錄 Redis 服務器
cd /opt/redis-2.8.13/src/
# 切換目標庫(默認 0,共 16 個庫 0-15)
./redis-cli -n 0
# 查看大小
./redis-cli dbsize
# 清空當前庫所有 key
./redis-cli flushdb
# 清空所有庫所有 key(慎用!)
./redis-cli flushall
注意: flushall 會清空所有數據庫,生產環境嚴禁使用。測試環境建議配合 KEYS pattern 精確清理業務相關 key。
CONFIG SET slowlog-log-slower-than 10000(10ms)redis-cli monitor 觀察實際執行指令redis-cli --bigkeys 發現內存佔用異常RedisTemplate 而非原生 Jedis,便於切換實現biz:module:entity:id,支持模式匹配清理RedisSerializer 統一序列化策略(推薦 JSON)