Redis缓存执行流程的核心是客户端发送命令到Redis服务器,服务器解析命令、查找键值(命中缓存直接返回,未命中则从数据库获取并缓存)、执行持久化或复制,最后返回结果给客户端。典型流程:1. 客户端请求;2. 检查缓存命中;3. 命中返回数据,未命中查询DB并set;4. 设置过期时间;5. 异步持久化到RDB/AOF。
来源1
Redis作为内存数据库,其缓存执行的基本流程如下:客户端通过TCP连接发送GET/SET等命令,Redis主线程接收并解析命令,进入事件循环处理。如果是读操作,先在哈希表中查找key,如果命中,直接序列化value返回;如果是写操作,更新内存数据结构,并根据配置异步触发AOF/RDB持久化或复制到从节点。整个过程单线程避免锁竞争,高效处理10万QPS。
来源2
深入Redis缓存命中流程:当执行cache.get(key)时,Redis先检查key是否存在于内存字典(dict)中,命中则检查TTL是否过期(lazy free机制),未过期直接返回;未命中则触发miss回调,由应用层从DB拉取数据,通过pipeline批量set回Redis,并设置expire。穿透保护用布隆过滤器,雪崩用随机TTL+多级缓存。
来源3
Redis写缓存流程详解:SET key value [EX seconds],Redis解析命令后分配SDS字符串存储key/value,插入hash table。如果开启AOF,追加“SET key value ”到AOF文件缓冲区;RDB则在bgsave fork子进程快照内存。复制模式下,主节点发送replconf ack给从节点同步。eviction策略如allkeys-lru在内存不足时淘汰key。
来源4
缓存更新策略在Redis中的执行:Cache Aside(旁路缓存):写DB后del Redis key;读时先Redis后DB。Read Through:读miss由Redis自动从DB load;Write Through:写时同步DB和Redis。流程中,双写一致性问题用canal监听binlog异步更新Redis,避免脏读用分布式锁(如Redlock)。
来源5
Redis集群模式下缓存执行流程:客户端用CRC16(key)%16384定位slot,slot分布在master节点。MOVESHARD/MIGRATE原子转移key。读写分离:主节点写,从节点读。Sentinel高可用:故障时slave提升为master,切换流程包括+switch-master广播。整个机制确保99.99%可用性。
来源6
性能优化视角的Redis缓存流程:使用pipeline批量命令减少RTT;MULTI/EXEC事务打包执行;Lua脚本原子化复杂逻辑如if key then del else set。监控命中率:INFO stats中的keyspace_hits / (hits+misses) >80%。慢查询用slowlog log。
FAQ
Q: Redis缓存穿透怎么处理?
A: 用布隆过滤器判断key是否存在,热点key加二级缓存,空值set短TTL。
Q: 缓存雪崩是什么?
A: 大量key同时过期,用随机expire、限流、熔断、多级缓存预防。
Q: Redis持久化机制流程?
A: RDB fork子进程快照,AOF追加日志,混合模式优选。
Q: 单线程模型如何高并发?
A: IO多路复用epoll,非阻塞事件驱动,CPU单核满载。