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 的应用场景

  1. 缓存
  • 典型用途:缓存热点数据,减轻数据库压力。
  1. 分布式锁
  • 使用 SETNX、EXPIRE 实现互斥锁。
  1. 限流
  • 通过 INCR + 过期时间统计访问次数。
  1. 排行榜
  • 使用 ZSET 存储分数,实现排名和范围查询。
  1. 消息队列
  • 使用 List(LPUSH/RPOP)或 Pub/Sub。
  1. 实时统计
  • INCR 计数、Bitmap 统计用户行为。

5. Redis 优缺点

优点

  • 速度快(内存操作)。
  • 数据结构丰富。
  • 支持事务(MULTI/EXEC)。
  • 支持 Lua 脚本扩展。
  • 支持集群与分布式。

缺点:

  • 内存数据库,存储成本高。
  • 持久化会影响性能。
  • 单线程(CPU 密集型场景性能受限)。
  • 集群运维复杂。

6. Redis安装

  1. 下载 wget https://download.redis.io/releases/redis-8.2.1.tar.gz
  2. 解压 tar -zxvf redis-8.2.1.tar.gz
  3. cd redis-7.2.4
  4. 编译 make
  5. 安装 make install # 安装到默认路径 /usr/local/bin
  6. 使用官方配置 cp ./utils/systemd-redis_server.service /etc/systemd/system/redis.service
  7. 创建配置文件目录和用户 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
  8. 启动并设置开机自启 systemctl daemon-reload,systemctl start redis,systemctl enable redis
  9. 常用 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