Redis 简介
Redis(Remote Dictionary Server)是一个开源的内存键值数据库,数据保存在内存中,读写极快,常用于缓存、消息队列、排行榜等场景。它支持字符串、哈希、列表、集合等多种数据结构,是后端开发与运维必会的工具之一。
核心特性
Redis 相比传统数据库有几大特点:
| 特性 | 说明 |
|---|---|
| 内存存储 | 数据在内存中,单线程处理命令,读写性能极高 |
| 多种数据结构 | String、Hash、List、Set、ZSet 等,直接支持业务模型 |
| 持久化 | 可通过 RDB 快照与 AOF 日志把内存数据落盘 |
| 高可用 | 主从复制、哨兵、集群可支撑大规模生产部署 |
| 原子操作 | 单命令执行原子,配合 Lua 脚本可实现复杂原子逻辑 |
默认监听 6379 端口,客户端通过 TCP 协议收发命令。
典型应用场景
按用途分类,Redis 常见于以下场景:
- 缓存:把数据库查询结果、热点数据放入 Redis,降低后端压力。
- 计数器:文章的阅读数、点赞数用 INCR/DECR 原子增减。
- 排行榜:有序集合 ZSet 天然支持按分数排序取 TopN。
- 会话存储:分布式环境下用 Redis 保存登录态,实现多机共享。
- 消息队列:List 的阻塞弹出、Stream 可搭建轻量队列。
与 Memcached 对比
Memcached 也是经典的内存缓存,但 Redis 功能更丰富:
| 对比项 | Redis | Memcached |
|---|---|---|
| 数据结构 | 十余种 | 仅字符串 |
| 持久化 | 支持 RDB/AOF | 不支持 |
| 主从/集群 | 完善 | 较弱 |
| 典型定位 | 缓存 + 业务存储 | 纯缓存 |
需要「缓存以外能力」(如排行榜、计数器、持久化)时选 Redis 更合适。
常见误解
- Redis 只是缓存:实际它是有持久化能力的数据库,可以承担存储职责。
- 单线程等于慢:单线程省去锁竞争与上下文切换,简单命令吞吐反而很高。
- 数据丢了没事:未开启持久化时重启确实丢数据,生产要按需配置 RDB/AOF。
小结
Redis 是高性能的内存键值数据库,凭多种数据结构和丰富特性统治缓存领域。后续章节将依次介绍安装启动、配置、命令客户端、数据类型与常用命令。