1. Redis 是什么?
Redis(Remote Dictionary Server)是一种基于 内存 的 Key-Value NoSQL 数据库,支持持久化、支持多种数据结构,常用于缓存、消息队列、排行榜、实时统计等场景。Redis 是一个高性能内存数据库/缓存系统,因其极快的速度和丰富的数据结构,被广泛用于缓存、分布式系统、实时应用中。 特点:
- 速度极快:数据在内存中操作,单机可达 10万+ QPS。
- 丰富数据结构:不仅仅是字符串,还支持 list、hash、set、zset、bitmap、hyperloglog、geo 等。
- 持久化:数据存内存,但支持 RDB、AOF 两种方式保存到磁盘。
- 多种应用场景:缓存、分布式锁、限流、消息队列等。
- 单线程模型(核心操作),利用 I/O 多路复用机制,避免上下文切换开销。
2. Redis 的数据类型
类型 | 说明 | 常用场景 |
---|---|---|
String | 最基本的类型,可以是字符串、数字、二进制 | 缓存对象、计数器 |
Hash | 类似于 Map(key 对应 field-value) | 存储用户信息、对象 |
List | 双向链表,可以从头尾操作 | 消息队列、任务列表 |
Set | 不重复元素集合 | 去重、标签 |
ZSet | 带分数的有序集合 | 排行榜、排序 |
Bitmap | 位图(bit 存储) | 用户签到、活跃统计 |
HyperLogLog | 基数统计 | UV(独立访客)计数 |
Geo | 地理位置 | 附近的人、打车软件定位 |
3. Redis 的持久化
- RDB(快照持久化):定期把内存快照写到磁盘,恢复速度快,但可能丢失最近数据。
- AOF(追加文件持久化):记录每条写命令,类似数据库日志,数据更安全,但文件较大。
- 混合持久化(RDB + AOF):兼顾性能与安全。
4. Redis 的应用场景
- 缓存
- 典型用途:缓存热点数据,减轻数据库压力。
- 分布式锁
- 使用 SETNX、EXPIRE 实现互斥锁。
- 限流
- 通过 INCR + 过期时间统计访问次数。
- 排行榜
- 使用 ZSET 存储分数,实现排名和范围查询。
- 消息队列
- 使用 List(LPUSH/RPOP)或 Pub/Sub。
- 实时统计
- INCR 计数、Bitmap 统计用户行为。
5. Redis 优缺点
优点:
- 速度快(内存操作)。
- 数据结构丰富。
- 支持事务(MULTI/EXEC)。
- 支持 Lua 脚本扩展。
- 支持集群与分布式。
缺点:
- 内存数据库,存储成本高。
- 持久化会影响性能。
- 单线程(CPU 密集型场景性能受限)。
- 集群运维复杂。
6. Redis安装
- 下载 wget https://download.redis.io/releases/redis-8.2.1.tar.gz
- 解压 tar -zxvf redis-8.2.1.tar.gz
- cd redis-7.2.4
- 编译 make
- 安装 make install # 安装到默认路径 /usr/local/bin
- 使用官方配置 cp ./utils/systemd-redis_server.service /etc/systemd/system/redis.service
- 创建配置文件目录和用户 1.mkdir -p /etc/redis 2.cp redis.conf /etc/redis/ 3.adduser --system --group --no-create-home redis 4.chown -R redis:redis /etc/redis
- 启动并设置开机自启 systemctl daemon-reload,systemctl start redis,systemctl enable redis
- 常用 Redis 命令:启动:sudo systemctl start redis,停止:sudo systemctl stop redis,重启:sudo systemctl restart redis,查看状态:sudo systemctl status redis,连接 Redis 控制台:redis-cli,测试 Redis 连接:redis-cli ping,查看 Redis 版本:redis-server --version