上一篇
场景引入:
凌晨三点,你的Web项目突然崩了,日志里疯狂刷屏“Redis连接超时”……你盯着屏幕咬牙切齿:“这破Redis配置到底哪儿写错了?!” 😤 别慌,今天就用最直白的大白话,带你搞定Web项目里的Redis配置,从此告别玄学debug!
# 以Spring Boot为例(其他框架逻辑类似) spring: redis: host: 127.0.0.1 # 别傻傻写localhost,有时候会解析抽风 port: 6379 password: yourpassword123 # 生产环境一定要设密码! database: 0 # 默认用0号库,多个业务建议分库 timeout: 3000 # 3秒连不上就报错,避免卡死线程
避坑指南:
timeout: 0
(等一辈子也不报错,请求堆到爆炸) spring.redis.lettuce.pool.max-active=8
(控制连接池大小) @Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setKeySerializer(new StringRedisSerializer()); // Key必须用字符串! template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); // Value用JSON return template; } }
血泪教训:
\xAC\xED\x00\x05t\x00\x0B
这种外星文 👽 # application-dev.properties spring.redis.host=localhost # application-prod.properties spring.redis.host=redis-cluster.prod.svc spring.redis.password=${REDIS_PASSWORD} # 密码从环境变量读取
Pro Tip:
@Profile("prod")
注解区分环境配置 @Service public class UserService { @Cacheable(value = "userCache", key = "#userId") // 自动缓存 public User getUserById(Long userId) { return userRepository.findById(userId); } }
效果:
@CacheEvict
清理缓存,数据更新不怕脏读 management: metrics: export: prometheus: enabled: true endpoint: metrics: enabled: true
关键指标:
redis_connections_active
:连接数突增?可能有泄漏! redis_latency
:延迟大于100ms就该扩容了 redis-cli --stat # 实时监控状态 redis-cli --bigkeys # 找出占用内存的“罪魁祸首” redis-cli MEMORY USAGE key_name # 查看某个key的内存用量
最后彩蛋:遇到MOVED
错误?说明该用Redis Cluster了,单机模式撑不住啦!
(本文配置示例基于Spring Boot 3.x + Jedis客户端,其他语言/框架逻辑相通)
本文由 宛清佳 于2025-08-05发表在【云服务器提供商】,文中图片由(宛清佳)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/545560.html
发表评论