🔴 Redis 简介

Redis 概述

Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统。它由意大利开发者 Salvatore Sanfilippo(antirez)于 2009 年开发,最初是为了解决 LLOOGG 网站的扩展性问题。Redis 现在由 Redis Labs 维护和开发。

🎯 Redis 的核心理念

Redis 的设计理念是"简单而强大"。它提供了丰富的数据结构和操作命令,同时保持了极高的性能和简洁的 API。Redis 不仅仅是一个缓存系统,更是一个功能完整的数据平台。

Redis 发展历程

2009年 - Redis 诞生

Salvatore Sanfilippo 为解决 LLOOGG 网站性能问题而创建了 Redis

2010年 - 1.0 版本发布

Redis 1.0 正式发布,支持基本的数据类型和持久化功能

2012年 - 2.6 版本

引入 Lua 脚本支持,增强了 Redis 的编程能力

2015年 - 3.0 版本

Redis Cluster 集群功能正式发布,支持分布式部署

2020年 - 6.0 版本

引入 ACL、多线程 I/O、客户端缓存等重要特性

2022年 - 7.0 版本

Redis Functions、ACL v2、命令内省等新特性

Redis 架构特点

🏗️ Redis 单机架构

客户端Redis 服务器内存数据库

持久化存储(RDB/AOF)

Redis 核心特性

⚡ 内存存储

所有数据存储在内存中,读写速度极快,支持每秒数十万次操作

🗂️ 丰富数据结构

支持字符串、哈希、列表、集合、有序集合、位图、HyperLogLog 等

💾 数据持久化

提供 RDB 快照和 AOF 日志两种持久化方式

🔄 主从复制

支持主从复制,实现数据备份和读写分离

🌐 集群支持

内置 Redis Cluster,支持水平扩展和高可用

📡 发布订阅

支持发布订阅模式,实现消息传递

🔒 事务支持

支持事务操作,保证操作的原子性

📜 Lua 脚本

支持 Lua 脚本,实现复杂的原子操作

Redis vs 其他数据库

特性 Redis MySQL MongoDB Memcached
数据存储 内存 + 持久化 磁盘 磁盘 内存
数据结构 丰富(8种+) 表格 文档 键值对
性能 极高 中等 中等 极高
持久化 支持 支持 支持 不支持
集群 原生支持 需要配置 原生支持 需要客户端
事务 支持 支持 支持 不支持

Redis 应用场景详解

1. 缓存系统

Redis 最常见的应用场景是作为缓存层,将频繁访问的数据存储在内存中:

# 缓存用户信息 SET user:1001 '{"name":"张三","age":25,"city":"北京"}' EXPIRE user:1001 3600 # 设置1小时过期 # 获取缓存 GET user:1001

2. 会话存储

在分布式系统中,Redis 可以作为共享的会话存储:

# 存储用户会话 HSET session:abc123 user_id 1001 HSET session:abc123 login_time 1640995200 EXPIRE session:abc123 1800 # 30分钟过期

3. 实时排行榜

利用有序集合实现排行榜功能:

# 添加用户分数 ZADD leaderboard 1500 "player1" ZADD leaderboard 2000 "player2" ZADD leaderboard 1800 "player3" # 获取排行榜前10名 ZREVRANGE leaderboard 0 9 WITHSCORES

4. 分布式锁

实现分布式环境下的锁机制:

# 获取锁 SET lock:resource1 "unique_value" NX EX 30 # 释放锁(使用 Lua 脚本保证原子性) if redis.call("get", KEYS[1]) == ARGV[1] then return redis.call("del", KEYS[1]) else return 0 end

💡 选择 Redis 的理由

  • 性能卓越:基于内存的存储,读写速度极快
  • 数据结构丰富:不仅仅是键值存储,支持复杂数据操作
  • 功能完整:缓存、数据库、消息队列一体化解决方案
  • 生态成熟:广泛的社区支持和客户端库
  • 运维友好:简单的部署和管理,丰富的监控工具

Redis 的局限性

虽然 Redis 功能强大,但也有一些需要注意的局限性:

🚀 下一步学习

现在您已经了解了 Redis 的基本概念和特性,接下来我们将学习如何安装和配置 Redis。建议您在学习过程中动手实践,通过实际操作来加深对 Redis 的理解。