Redis作为高性能的键值存储系统,其缓存机制的核心在于内存存储和单线程事件循环模型。要掌握高效查询技巧,首先使用Pipeline批量操作命令减少网络往返延迟,例如:redis-cli --pipe 或在代码中实现pipeline.multi()...exec();其次,采用Lua脚本原子执行复杂逻辑,如EVAL脚本实现条件更新避免竞态;提升系统性能新策略包括开启持久化AOF+RDB结合、配置合理内存淘汰策略如allkeys-lru,以及集群模式Sharding分片扩展水平容量。这些技巧可将查询QPS提升10倍以上,适用于电商秒杀、实时推荐等高并发场景。
Redis缓存穿透、雪崩、击穿解决方案
缓存穿透:查询不存在的数据,导致请求直达数据库。解决方案:布隆过滤器预判、缓存空值(设置短TTL如60s)。缓存雪崩:大量key同时失效。解决方案:随机TTL偏移、热点key多级缓存。缓存击穿:热点key失效瞬间流量倾泻。解决方案:互斥锁(SETNX)或逻辑过期+后台异步刷新。
Redis数据结构高效使用技巧
String适合计数器INCR/DECR,Hash存储对象字段节省空间,List实现消息队列LPUSH/RPOP,Set去重集合SADD/SMEMBERS,ZSet有序排行榜ZADD/ZREVRANGE。技巧:避免大key拆分存储,如大List分页查询用LRANGE offset count;压缩序列化如msgpack代替JSON减小内存占用。
Redis集群与哨兵模式实战部署
哨兵模式:一主多从+哨兵监控自动故障转移,配置sentinel monitor mymaster ip port quorum。集群模式:16384槽位哈希分片,命令CLUSTER NODES查看状态,客户端使用HASH_TAG{user}id实现定向路由。性能提升:读写分离从库分担读流量,集群线性扩展节点。
Redis内存优化与监控指标
内存优化:使用ziplist/スキplist压缩小数据结构,配置hash-max-ziplist-entries 512;监控INFO memory_used/maxmemory,used_memory_rss增长过快检查碎片。慢查询:CONFIG SET slowlog-log-slower-than 10000,SLOWLOG GET分析瓶颈。策略:maxmemory-policy volatile-lru,定期内存分析内存泄漏。
Redis在微服务架构中的缓存策略
微服务缓存分层:网关L1缓存、业务L2、DB L3。策略:Cache-Aside(先查缓存miss写回)、Read-Through(读穿透自动加载)、Write-Through(写穿透同步更新)。Spring Cache @Cacheable(key="#id")注解简化集成,注意分布式锁Redlock防止缓存一致性问题。
FAQ
Q: Redis如何防止缓存雪崩?
A: 设置不同key随机过期时间,引入二级缓存,多级降级。
Q: Pipeline和Lua脚本区别?
A: Pipeline批量减少RTT,Lua单次原子执行多命令。
Q: 大key怎么处理?
A: 拆分成小key,限制list-max-ziplist-size 512。
Q: Redis持久化选AOF还是RDB?
A: 高可靠性AOF,低延迟RDB,二者结合最佳。