Redis 基础知识详解
一、什么是 Redis?
Redis(Remote Dictionary Server)是一个开源的高性能键值对(Key-Value)数据库,常被用作缓存、消息队列、排行榜、会话管理等场景。它支持丰富的数据结构,数据全部存储在内存中,读写速度极快,并支持持久化到磁盘。
二、Redis 的主要特点
- 高性能:读写速度极快,单机可达每秒十万级别的读写操作。
- 丰富数据结构:支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等多种数据类型。
- 多种持久化方式:支持 RDB 快照和 AOF 日志两种持久化机制。
- 原子操作:所有操作都是原子的,支持事务。
- 多语言支持:几乎所有主流编程语言都有 Redis 客户端。
- 分布式与高可用:支持主从复制、哨兵、集群等高可用和分布式方案。
三、Redis 的常用数据类型
1. 字符串(String)
最基本的数据类型,可以存储字符串、数字、二进制数据等。
SET key value
GET key
INCR key # 自增
DECR key # 自减
2. 哈希(Hash)
适合存储对象,类似于 Python 的字典。
HSET user:1 name "Tom"
HGET user:1 name
HGETALL user:1
3. 列表(List)
有序的字符串列表,支持从两端插入和弹出,常用于消息队列。
LPUSH mylist a b c
RPUSH mylist d
LPOP mylist
RPOP mylist
LRANGE mylist 0 -1
4. 集合(Set)
无序且唯一的字符串集合,常用于去重、标签等场景。
SADD myset a b c
SREM myset b
SMEMBERS myset
SISMEMBER myset a
5. 有序集合(Sorted Set)
每个元素关联一个分数,按分数排序,常用于排行榜。
ZADD myzset 100 Tom 90 Jack
ZRANGE myzset 0 -1 WITHSCORES
ZREM myzset Tom
四、Redis 的持久化机制
-
RDB(快照)
定期将内存中的数据快照保存到磁盘,适合灾难恢复。 -
AOF(追加文件)
以日志形式记录每次写操作,重启时可重放日志恢复数据,数据安全性更高。 -
混合持久化
Redis 4.0+ 支持 RDB+AOF 混合持久化,兼顾性能和安全。
五、Redis 的高可用与分布式
-
主从复制
一个主节点可有多个从节点,实现读写分离和数据冗余。 -
哨兵(Sentinel)
自动监控主节点故障并自动切换,保证高可用。 -
集群(Cluster)
支持数据分片和多主节点,适合大规模分布式场景。
六、常用应用场景
- 缓存:加速数据库访问,减轻后端压力
- 分布式锁:利用 SETNX、EXPIRE 实现
- 消息队列:基于 List、Stream 实现异步消息
- 排行榜/计数器:利用 Sorted Set、INCR
- 会话管理:存储用户 Session 信息
七、常用命令速查
命令 | 作用 |
---|---|
SET/GET | 设置/获取键值 |
DEL key | 删除键 |
EXISTS key | 判断键是否存在 |
EXPIRE key s | 设置过期时间 |
KEYS * | 查询所有键 |
FLUSHDB | 清空当前库 |
FLUSHALL | 清空所有库 |
八、Redis 的优缺点
优点:
- 速度快,支持多种数据结构
- 支持持久化和高可用
- 社区活跃,生态丰富
缺点:
- 数据全部在内存,成本较高
- 不适合超大数据量的持久存储
- 单线程模型,部分场景下并发有限制(但6.0+已支持多线程IO)
九、总结
Redis 是现代互联网架构中不可或缺的高性能缓存和 NoSQL 数据库。掌握 Redis 的基本原理、常用命令和典型应用场景,是每个后端开发者和运维工程师的必备技能。
建议:
- 日常开发中多用 Redis 提升系统性能
- 结合实际业务场景选择合适的数据结构和持久化方案
- 注意数据安全和高可用配置
如需更深入的 Redis 实战或高级用法,欢迎留言交流!