Redis 是一个开源的内存数据结构存储系统,常用作数据库、缓存和消息队列,特点如下:
键值存储:支持字符串、列表、集合、哈希、有序集合(ZSet)等结构。
高性能:内存操作,读写速度极快,通常在毫秒级。
持久化:可将数据保存至磁盘。
其他功能:发布订阅、事务、Lua脚本、主从复制、集群。
Redis 常见应用场景包括缓存热点数据、实时排行榜、会话存储、消息队列和秒杀系统等。
| 特性 | Redis | MySQL |
|---|---|---|
| 存储方式 | 内存为主,可持久化 | 磁盘存储 |
| 数据结构 | 键值型(Key-Value) | 表格、行列关系 |
| 查询方式 | 命令式接口,无SQL | SQL(结构化查询语言) |
| 数据一致性 | 弱一致性,适合临时数据 | 强一致性,事务支持 |
| 适用场景 | 高速缓存、临时数据、计数器、消息队列 | 持久数据、关系型数据、复杂事务 |
Redis 不能完全取代 MySQL,但二者可组合使用。
常见模式:
缓存模式(缓存穿透防护):
请求数据 → 先查Redis → 若未命中则查询MySQL → 存入Redis缓存。
data = redis.get("user:123") if not data: data = mysql.query("SELECT * FROM users WHERE id=123") redis.set("user:123", data, ex=600)
缓存一致性(Cache Aside模式):
更新MySQL同时删除或更新Redis缓存数据。
高频数据计数器或排行榜:
用Redis的原子操作统计高频数据,定时写回MySQL。