Redis 基础入门与实践指南

从历史到实战,系统了解高性能内存数据库 Redis

    • [1. Redis 概述与历史](#1. Redis 概述与历史)
      • [1.1 什么是 Redis](#1.1 什么是 Redis)
      • [1.2 核心特性](#1.2 核心特性)
      • [1.3 发展历史](#1.3 发展历史)
    • [2. Ubuntu 环境下安装 Redis](#2. Ubuntu 环境下安装 Redis)
      • [2.1 环境准备](#2.1 环境准备)
      • [2.2 方式一:APT 包管理器安装(推荐新手)](#2.2 方式一:APT 包管理器安装(推荐新手))
      • [2.3 方式二:官方仓库安装(推荐生产环境)](#2.3 方式二:官方仓库安装(推荐生产环境))
      • [2.4 方式三:源码编译安装](#2.4 方式三:源码编译安装)
      • [2.5 启动与管理](#2.5 启动与管理)
      • [2.6 验证安装](#2.6 验证安装)
      • [2.7 基础配置调整](#2.7 基础配置调整)
    • [3. Redis 重要文件及作用](#3. Redis 重要文件及作用)
    • [4. Redis 命令行客户端](#4. Redis 命令行客户端)
    • [5. Redis 使用场景](#5. Redis 使用场景)
    • [6. 总结](#6. 总结)

1. Redis 概述与历史

1.1 什么是 Redis

Redis(Re mote Di ctionary Server)是一个开源的、基于内存的键值对(Key-Value)存储系统,使用 C 语言编写,支持网络、可基于内存亦可持久化,并提供多种语言的 API。

Redis 是目前最流行的 NoSQL 数据库之一,以其极高的性能和丰富的数据结构支持而著称。

1.2 核心特性

特性 说明
高性能 纯内存操作,读写速度可达 10 万+ QPS
丰富的数据结构 String、List、Hash、Set、Sorted Set、Bitmap、HyperLogLog、GEO、Stream 等
持久化 支持 RDB 快照和 AOF 日志两种持久化方式
高可用 支持主从复制、哨兵模式、Cluster 集群
原子性 所有操作都是原子性的,支持事务
发布订阅 内置 Pub/Sub 消息系统
Lua 脚本 支持 Lua 脚本扩展

1.3 发展历史

时间 里程碑
2009 年 Salvatore Sanfilippo(网名 antirez)为解决其初创公司 LLOOGG 的性能瓶颈,开发了 Redis 的原始版本
2010 年 Redis 1.0 正式发布,VMware 赞助开发
2011 年 Redis 2.0 发布,引入虚拟内存(后被废弃)
2012 年 Redis 2.6 发布,支持 Lua 脚本
2013 年 Redis 2.8 发布,引入 Sentinel 哨兵高可用方案
2015 年 Redis 3.0 发布,正式支持 Redis Cluster 集群
2017 年 Redis 4.0 发布,引入模块系统、混合持久化
2018 年 Redis 5.0 发布,引入 Stream 数据类型
2020 年 Salvatore Sanfilippo 宣布退出 Redis 维护,由 Redis Labs 接管
2024 年 Redis 7.2 稳定版发布,之后宣布协议变更为双许可(RSALv2 + SSPLv1),社区成立 Valkey 等分支

2. Ubuntu 环境下安装 Redis

2.1 环境准备

bash 复制代码
# 更新软件包列表
sudo apt update

# 安装必要的依赖
sudo apt install -y lsb-release curl gpg

2.2 方式一:APT 包管理器安装(推荐新手)

bash 复制代码
# 安装 Redis
sudo apt install redis -y

# 查看安装的版本
redis-server --version

Ubuntu 仓库中的版本可能不是最新版,适用于快速入门和对版本无特殊要求的场景。

2.3 方式二:官方仓库安装(推荐生产环境)

bash 复制代码
# 添加 Redis 官方 GPG 密钥
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

# 添加 Redis 官方 APT 仓库
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

# 更新并安装
sudo apt update
sudo apt install -y redis

2.4 方式三:源码编译安装

bash 复制代码
# 下载最新稳定版源码
wget https://download.redis.io/redis-stable.tar.gz

# 解压
tar -xzf redis-stable.tar.gz
cd redis-stable

# 编译(-j 指定并行编译数,加速)
make -j$(nproc)

# 安装到系统
sudo make install

2.5 启动与管理

bash 复制代码
# 启动 Redis 服务(安装后默认已启动)
sudo systemctl start redis-server

# 设置开机自启
sudo systemctl enable redis-server

# 查看运行状态
sudo systemctl status redis-server

# 停止服务
sudo systemctl stop redis-server

# 重启服务
sudo systemctl restart redis-server

2.6 验证安装

bash 复制代码
# 使用 redis-cli 连接并执行 PING 命令
redis-cli ping
# 若返回 PONG,则表示安装成功

2.7 基础配置调整

Redis 主配置文件位于 /etc/redis/redis.conf,建议修改以下关键项:

bash 复制代码
sudo vim /etc/redis/redis.conf
conf 复制代码
# 绑定地址(生产环境限定内网 IP)
bind 127.0.0.1

# 保护模式(无密码时仅允许本地连接)
protected-mode yes

# 端口
port 6379

# 守护进程模式
daemonize yes

# 日志文件
logfile /var/log/redis/redis-server.log

# 持久化目录
dir /var/lib/redis

# 设置密码(生产环境强烈建议)
requirepass your_strong_password

修改后重启服务:

bash 复制代码
sudo systemctl restart redis-server

3. Redis 重要文件及作用

安装 Redis 后,系统中会存在以下重要文件。理解这些文件的职责是运维和管理 Redis 的基础。

文件 / 目录 路径示例 作用
redis-server /usr/bin/redis-server Redis 服务端可执行文件,负责请求处理、数据存储、持久化等
redis-cli /usr/bin/redis-cli Redis 命令行交互客户端,详见第 4 章
redis-benchmark /usr/bin/redis-benchmark 性能压测工具,评估吞吐量和延迟
redis-check-rdb /usr/bin/redis-check-rdb RDB 快照文件检查与修复工具
redis-check-aof /usr/bin/redis-check-aof AOF 日志文件检查与修复工具(--fix 修复)
redis-sentinel /usr/bin/redis-sentinel 哨兵高可用程序,监控主从并自动故障转移
redis.conf /etc/redis/redis.conf 核心配置文件,涵盖网络、安全、持久化、内存、复制等参数
dump.rdb /var/lib/redis/dump.rdb RDB 持久化产生的内存快照文件
appendonly.aof /var/lib/redis/appendonly.aof AOF 持久化产生的操作日志文件

4. Redis 命令行客户端

redis-cli 是 Redis 自带的命令行客户端,两种方式连接 Redis 服务:

交互式方式 :通过 redis-cli -h {host} -p {port} 连接后,后续操作在交互界面中完成:

bash 复制代码
redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set key hello
OK
127.0.0.1:6379> get key
"hello"

命令方式redis-cli -h {host} -p {port} {command} 直接返回命令结果:

bash 复制代码
redis-cli -h 127.0.0.1 -p 6379 ping
PONG
redis-cli -h 127.0.0.1 -p 6379 set key hello
OK
redis-cli -h 127.0.0.1 -p 6379 get key
"hello"

连接 127.0.0.1:6379 时可省略 -h-p 参数。redis-cli 是学习 Redis 的重要工具,更多功能将在后续章节介绍。

Redis 客⼾端与服务端的交互过程


5. Redis 使用场景

场景 数据结构 典型操作 说明
缓存 String / Hash SET GET EXPIRE 热点数据缓存,降低 DB 压力;注意穿透、击穿、雪崩三类问题
分布式锁 String SET NX PX + Lua 跨进程互斥锁,红锁算法保证高可用
计数器 String INCR INCRBY 阅读量、点赞、库存扣减等原子计数
限流 Sorted Set / String ZADD + EXPIRE + Lua 滑动窗口 / 令牌桶,保护后端服务
排行榜 Sorted Set ZADD ZREVRANGE ZRANK 积分榜、热度榜,按分数自动排序
消息队列 List / Stream LPUSH+BRPOP / XADD+XREADGROUP List 简易队列;Stream 支持消费者组、ACK 确认
Session 共享 Hash HSET EXPIRE 分布式会话集中存储,避免登录漂移
发布/订阅 Pub/Sub PUBLISH SUBSCRIBE 轻量级消息通知,不支持持久化
地理位置 GEO GEOADD GEORADIUS GEODIST 附近的人、商家检索、配送范围计算
位图统计 Bitmap SETBIT BITCOUNT BITOP 签到打卡、用户活跃统计,极省内存
布隆过滤器 RedisBloom 模块 BF.ADD BF.EXISTS 快速判断元素是否存在,防缓存穿透
延迟队列 Sorted Set ZADD 按时间戳排序 定时任务、订单超时取消
去重统计 Set / HyperLogLog SADD PFADD PFCOUNT UV 统计、去重计数
购物车 Hash HSET HGETALL 商品 ID 与数量映射
验证码 String SET EXPIRE TTL 自动过期
好友关系 Set SINTER SUNION SDIFF 共同好友、推荐关注
分布式 ID String INCR 全局唯一自增 ID 生成
Feed 流 Sorted Set ZADD 按时间戳排序 关注动态时间线
配置中心 Hash HSET HGET 集中管理配置项

6. 总结

  1. Redis 的 8 个特性:速度快、基于键值对的数据结果服务器、功能丰富、简单稳定、客⼾端语⾔
    多、持久化、主从复制、⽀持⾼可⽤和分布式。
  2. Redis 并不是万⾦油,有些场景不适合使⽤ Redis 进⾏开发。
  3. 开发运维结合以及阅读源码是⽤好 Redis 的重要⽅法。
  4. 根据需求选择稳定版本的 Redis。

本文持续更新中,欢迎交流指正。如有错误或遗漏,请联系作者修正。

相关推荐
kishu_iOS&AI1 小时前
Python Redis客户端 AI应用开发完整指南
人工智能·redis·ai a
江畔柳前堤2 小时前
agent面试题
数据库·人工智能·opencv·数据挖掘·语音识别·agent
J.P.August2 小时前
ASM故障组配置实现RAC双活冗余
数据库·oracle
乐兮创想 小林2 小时前
企业官网 i18n 多语言工程实践:URL 策略、hreflang、内容管理与多语言 SEO
数据库·网站建设·企业官网·北京网站建设公司
我爱学习好爱好爱2 小时前
Docker Compose部署SpringBoot2+Vue3+redis项目(Rockylinux9.6):MySQL 主从复制实战
redis·mysql·docker
烁3472 小时前
Oracle学习
数据库·学习·oracle
Bert.Cai2 小时前
Oracle LENGTH函数详解
数据库·oracle
云和数据.ChenGuang2 小时前
大模型厂商常用的数据库有哪些?
数据库·人工智能·pytorch·深度学习·numpy