Redis 是一个开源的 高性能分布式内存数据存储系统,常用作 缓存、消息队列 或 持久化的键值存储数据库。它是基于内存的,但也支持将数据异步地写入磁盘,因此具有极高的性能和灵活性。
主要特点
1. 键值存储
Redis 以键值对的形式存储数据,支持多种数据结构。
2. 多种数据结构支持
• 字符串 (String): 单值存储,最长可达 512MB。
• 列表 (List): 用于存储有序的字符串集合,支持先进先出的队列操作。
• 集合 (Set): 无序且不重复的字符串集合。
• 有序集合 (Sorted Set): 带有分数的集合,按分数排序。
• 哈希 (Hash): 用于存储键值对的键值。
• 位图 (Bitmap): 用于高效地存储和操作位。
• HyperLogLog: 用于基数统计。
3. 高性能
Redis 的所有数据操作都在内存中完成,读写速度非常快,适合对高并发访问的场景。
4. 支持持久化
Redis 支持两种方式的持久化:
• RDB(快照):在指定间隔时间内将数据快照保存到磁盘。
• AOF(追加日志):记录每次写操作并保存日志文件,数据恢复更加精确。
5. 主从复制与高可用
Redis 支持主从复制机制和高可用的集群部署(Redis Sentinel 或 Redis Cluster)。
6. 事务支持
提供简单的事务机制,通过 MULTI、EXEC 等命令保证多个操作的原子性。
7. 脚本支持
支持通过嵌入式 Lua 脚本执行复杂的操作。
8. 过期与淘汰策略
可以为每个键设置过期时间,支持多种淘汰策略(如 LRU、LFU)。
常见应用场景
1. 缓存
凭借其高效的内存操作,Redis 是构建高性能缓存系统的首选。
2. 排行榜
使用有序集合 (Sorted Set) 实现排行榜,如游戏积分排名。
3. 会话管理
存储用户的会话数据,如登录状态、Token、购物车等。
4. 消息队列
借助列表 (List) 或发布/订阅 (Pub/Sub) 机制实现简单的消息队列功能。
5. 分布式锁
通过键值及其过期时间实现可靠的分布式锁。
6. 实时计数
使用字符串自增和 HyperLogLog 实现高效计数,如访问量统计。
部署和使用
1. 单机部署
适合小型项目或开发环境,简单高效。
2. 主从模式
增强高可用性和读取性能,数据从主节点同步到从节点。
3. Sentinel 模式
自动故障转移的高可用部署方案,监控主从实例并实现主从切换。
4. Cluster 集群
支持数据分片和高可用性,适合大规模高并发的业务场景。
常见命令示例
# 基本操作
SET key value # 设置键值
GET key # 获取键值
DEL key # 删除键值
EXPIRE key seconds # 设置键的过期时间
# 数据结构操作
LPUSH list value # 将值加入列表左侧
ZRANGE zset 0 -1 # 获取有序集合的所有成员
HSET hash field value # 设置哈希表的字段值
# 事务操作
MULTI # 开始事务
SET key value # 添加操作
EXEC # 执行事务
# 发布/订阅
PUBLISH channel msg # 发布消息
SUBSCRIBE channel # 订阅频道