Redis笔记实战:从入门到精通,解决缓存与数据结构难题

文章导读
Redis安装与启动:在Linux上,下载Redis源码包,解压后make && make install。启动redis-server,客户端redis-cli连接。基本命令:SET key value,GET key,DEL key。缓存穿透解决方案:布隆过滤器预判不存在key;缓存空值,设置短过期时间;接口参数校验。
📋 目录
  1. Redis五大数据结构
  2. Redis持久化机制
  3. Redis哨兵与集群
  4. 缓存雪崩与击穿
  5. Redis Lua脚本实战
  6. Pipeline批量操作
A A

Redis安装与启动:在Linux上,下载Redis源码包,解压后make && make install。启动redis-server,客户端redis-cli连接。基本命令:SET key value,GET key,DEL key。缓存穿透解决方案:布隆过滤器预判不存在key;缓存空值,设置短过期时间;接口参数校验。

Redis五大数据结构

String类型:SET user:1:name "张三",GET user:1:name。用于计数器INCR,缓存session。Hash类型:HSET user:1000 name "李四" age 20,HGETALL user:1000。适合存储对象。List类型:LPUSH list:a "a",RPOP list:a。模拟队列或栈。Set类型:SADD set:a 1 2 3,SINTER set:a set:b。交集、并集、差集操作。ZSet类型:ZADD rank:game 100 player1,ZREVRANGE rank:game 0 9。排行榜实现。

Redis持久化机制

RDB快照:save 900 1,bgsave后台保存。优点:数据紧凑,适合冷备份。AOF日志:appendonly yes,每次写操作追加日志。混合模式:Redis 4.0后支持RDB+AOF。故障恢复优先AOF。

Redis笔记实战:从入门到精通,解决缓存与数据结构难题

Redis哨兵与集群

哨兵模式:sentinel monitor mymaster 127.0.0.1 6379 2。主从切换自动。高可用。集群模式:redis-cli --cluster create 127.0.0.1:7001..7006 --cluster-replicas 1。分片存储,CRC16哈希槽16384个。

缓存雪崩与击穿

雪崩:大量key同时过期,加随机过期时间;多级缓存。击穿:热点key失效,互斥锁setnx加锁,redis本地缓存双写。热点key永不过期,定时刷新。

Redis笔记实战:从入门到精通,解决缓存与数据结构难题

Redis Lua脚本实战

EVAL "local key=KEYS[1] local val=ARGV[1] redis.call('set',key,val) redis.call('expire',key,60) return val" 1 mykey myvalue。原子性操作,避免竞态。

Redis笔记实战:从入门到精通,解决缓存与数据结构难题

Pipeline批量操作

pipeline=redis.pipeline() pipeline.set('k1','v1') pipeline.execute()。减少RTT,提升性能。

FAQ
Q: Redis单线程为什么快?
A: 内存操作,无磁盘IO;多路复用epoll;简单数据结构。
Q: 如何防止缓存穿透?
A: 布隆过滤器+缓存空值+参数校验。
Q: 主从复制延迟怎么解决?
A: 强制走主库读写分离场景;使用哨兵或cluster。
Q: Redis内存不足OOM?
A: maxmemory-policy allkeys-lru;监控info memory。