Redis实战:缓存设计、消息队列、分布式锁与高可用架构

Redis实战:缓存设计、消息队列、分布式锁与高可用架构

Redis(Remote Dictionary Server)最初由Salvatore Sanfilippo在2009年开发,以极高性能(单线程下可达约100万次/秒的读写操作)和丰富的数据结构著称。与Memcached相比,Redis提供了String、List、Hash、Set、Sorted Set、HyperLogLog、Bitmap、Stream等多种数据结构,使其适用于远超简单缓存的多种场景。

核心数据结构与使用场景

String:最基础的类型,可存储最大512MB的字符串/数字。常见用途:会话Token(`SET session:xyz “{…}” EX 3600`,EX指定过期时间)、原子计数器(`INCR page:views:post:123`,保证原子性)、分布式锁(`SET lock:resource “owner” NX EX 30`,NX表示仅在键不存在时设置)。

Sorted Set:每个成员关联一个分数(score),按分数排序。实时排行榜的理想数据结构:`ZADD leaderboard 9850 “user:42″`添加分数,`ZREVRANGE leaderboard 0 9 WITHSCORES`获取前10名,`ZRANK leaderboard “user:42″`查询排名——以O(log N)时间复杂度支持所有操作。

Stream:Redis 5.0引入的日志数据结构,支持持久化、消费者组(Consumer Group)和消费确认(ACK),是Redis内置的轻量级消息队列实现,类似于简化版Kafka,适合在不引入Kafka复杂性的情况下实现可靠的事件流。

高可用:Redis Sentinel与Redis Cluster

单机Redis适合开发和低负载场景。生产高可用通常采用Redis Sentinel(主从复制+自动故障转移,适合单主节点场景,Sentinel监控主节点并在故障时自动提升从节点)或Redis Cluster(数据自动分片到16384个槽,支持水平扩展,适合数据量超出单节点内存的场景)。参考我们的分布式系统架构设计了解Redis在系统设计中的定位。

上一篇 PostgreSQL Deep Optimization: Index Strategy, Query Plan Analysis, and High-Concurrency Tuning
下一篇 GraphQL vs REST:API设计范式的深层比较与选型指南