Redis 简介和安装

一,Redis 与 NoSQL 概念梳理

1.1 Redis 简介

Redis 是一款基于内存的键值型(Key-Value)数据库,具有以下核心特点:

  • 高性能:数据存储在内存中,读写速度极快,适合高并发场景
  • 数据结构丰富:支持 String、Hash、List、Set、ZSet 等多种数据类型
  • 持久化支持:提供 RDB 和 AOF 两种持久化机制,兼顾性能与数据安全
  • 开源 & 社区活跃:广泛应用于缓存、会话管理、消息队列等场景
  • 属于 NoSQL 数据库:非关系型、灵活扩展、适合非结构化/半结构化数据

1.2 NoSQL 概念的演变

🔹 早期:「No SQL」= 坚决不用 SQL

在数据库发展的早期阶段,不同厂商的数据库产品(如 IBM DB2、Oracle、Informix 等)各自采用私有操作命令,缺乏统一标准:

复制代码
✅ 学会 A 数据库 → ❌ 不一定能操作 B 数据库

这种"方言式"的交互方式导致学习成本高、迁移困难。后来 SQL(Structured Query Language) 作为标准查询语言被提出,逐步成为关系型数据库的通用接口。

但当时部分开发者对"标准化"持保留态度,认为:

  • SQL 限制了数据库的灵活性
  • 关系模型无法高效处理某些场景(如海量日志、图关系、文档存储)

因此,早期的 「No SQL」 字面含义是:"反对 SQL,坚持使用自有命令"

🔹 现代:「Not Only SQL」= 不止于 SQL

随着互联网业务发展,传统关系型数据库在以下场景面临挑战:

|--------|-------------|-----------------|
| 场景 | 关系型数据库的局限 | NoSQL 的优势 |
| 海量数据写入 | 垂直扩展成本高 | 水平扩展、分布式架构 |
| 非结构化数据 | 需预定义 Schema | 灵活字段、动态模型 |
| 高并发读/写 | 锁机制、事务开销 | 最终一致性、轻量协议 |
| 特定数据模型 | 通用但不够专精 | 键值/文档/列族/图等专用优化 |

于是,社区重新定义了 NoSQL = Not Only SQL,其核心理念是:

"根据业务场景选择合适的存储方案,关系型与非关系型数据库可以协同工作"


1.3 总结:技术选型的核心逻辑

复制代码
🔹 没有"最好"的数据库,只有"最合适"的数据库
🔹 SQL 与 NoSQL 不是对立关系,而是互补关系
🔹 Redis 等 NoSQL 数据库的出现,是为了填补关系型数据库在特定场景下的能力空白

📌 典型混合架构示例:

复制代码
用户信息(强一致) → MySQL / PostgreSQL  
会话缓存(高性能) → Redis  
商品详情(灵活结构) → MongoDB  
社交关系(图查询) → Neo4j  
日志分析(列式存储) → ClickHouse / HBase

💡 建议:在实际项目中,优先明确业务需求(一致性、扩展性、查询模式等),再结合技术特性进行选型,避免"为了用新技术而用新技术"。


二,主流数据库类型分类速查

📋 按数据模型分类

|-------------------------------|--------------------------------|-------------------------------------|-----------------------------------------------|-------------------------------|
| 数据库类型 | 核心描述 | 存储结构/特点 | 代表产品 | 典型应用场景 |
| 键值数据库 (Key-Value) | 通过唯一 Key 快速访问 Value,结构简单、读写极快 | 哈希表(Hash Table)结构,支持过期、持久化等扩展 | 🔹 Redis 🔹 Memcached 🔹 Amazon DynamoDB | 缓存会话、计数器、排行榜、分布式锁 |
| 列存储数据库 (Column-Family) | 按列族组织数据,适合海量数据分布式存储与聚合分析 | 列式存储 + 压缩编码,支持水平扩展与高吞吐写入 | 🔹 Apache HBase 🔹 Cassandra 🔹 ClickHouse | 日志分析、时序数据、大数据报表、IoT 数据采集 |
| 文档数据库 (Document-Oriented) | 以半结构化文档为单位存储,Schema 灵活,支持嵌套查询 | JSON / BSON 格式,支持字段级索引与丰富查询语法 | 🔹 MongoDB 🔹 Couchbase 🔹 Firebase Firestore | 内容管理、用户画像、商品中心、移动端后端 |
| 图数据库 (Graph) | 专为关系网络设计,高效处理多跳查询与路径分析 | 节点(Node)+ 边(Edge)+ 属性(Property)的图模型 | 🔹 Neo4j 🔹 JanusGraph 🔹 Amazon Neptune | 社交关系、风控反欺诈、知识图谱、推荐系统 |
| 对象数据库 (Object-Oriented) | 直接存储编程语言中的对象,避免 ORM 映射开销 | 对象序列化存储,支持继承、多态等 OOP 特性 | 🔹 db4o(已停更) 🔹 ObjectDB 🔹 Versant | 嵌入式系统、CAD/CAE 软件、复杂领域模型(小众场景) |
| XML 数据库 (XML-Native) | 原生支持 XML 文档存储与 XPath/XQuery 查询 | 树形结构解析,保留标签层级与命名空间信息 | 🔹 BaseX 🔹 eXist-db 🔹 MarkLogic(混合支持) | 配置文件管理、政务/金融报文交换、遗留系统集成 |


🔍 补充说明

✅ 选型建议速览

⚠️ 注意事项

  1. 对象数据库(如 db4o):目前生态较弱,多数场景已被「关系型 + ORM」或「文档数据库」替代,新项目慎用;
  2. XML 数据库:适用于特定行业标准(如金融 FIXML、政务 GML),通用业务建议转为 JSON + 文档数据库;
  3. 混合架构是常态:现代系统常组合使用多种数据库(如 MySQL + Redis + Elasticsearch),发挥各自优势;
  4. 云原生趋势:主流云厂商提供托管服务(如 AWS ElastiCache、Azure Cosmos DB),可降低运维成本。

📚 扩展阅读推荐

💡 提示 :技术选型请以 业务场景 > 数据特征 > 团队能力 > 运维成本 为优先级,避免盲目追新。

三,Linux8 安装 Redis

小编服务器信息如下

bash 复制代码
[root@toast-server redis]# uname
Linux
[root@toast-server redis]# uname -m
x86_64
[root@toast-server redis]# uname -u
uname: invalid option -- 'u'
Try 'uname --help' for more information.
[root@toast-server redis]# uname -r
5.10.134-19.3.al8.x86_64
[root@toast-server redis]# cat /etc/os-release 
NAME="Alibaba Cloud Linux"
VERSION="3 (OpenAnolis Edition)"
ID="alinux"
ID_LIKE="rhel fedora centos anolis"
VERSION_ID="3"
VARIANT="OpenAnolis Edition"
VARIANT_ID="openanolis"
ALINUX_MINOR_ID="2104"
ALINUX_UPDATE_ID="13"
PLATFORM_ID="platform:al8"
PRETTY_NAME="Alibaba Cloud Linux 3.2104 U13 (OpenAnolis Edition)"
ANSI_COLOR="0;31"
HOME_URL="https://www.aliyun.com/"

兼容 RHEL 8 / CentOS 8 的软件包(platform:al8 标识

3.1 阅读 Redis 官网信息

首先进入 redis官网 ,点击 Does

点击 Does,如果Redis 官网更新了,没有 Does 选择项,直接使用 Redis 官网的搜索功能,也是可以的

点击 Redis Install

可以发现有很多种安装方式,小编这边选择 源码的方式进行安装,点击 Build and run Redis Open Source 选项。然后根据自己的Linux系统环境找到对应的源码安装包,小编这边是 Linux 8.10。

不清楚自己Linux系统的同学可以问 AI 用什么命令知道自己的Linux系统信息,适合安装下面哪款部署包。

选择进入之后

会看到是要我们进入redis 的github 仓库去下载,地址如下:

Redis github releases地址

还有一个地址redis 维护的版本地址:Index of /releases/

这两个地址都可以进行下载,小编这边就从github 那边下载

3.2 开始下载

  1. 通过 wget 将源码包下载到Linux系统上
bash 复制代码
[root@toast-server ~]# wget https://github.com/redis/redis/archive/refs/tags/8.8.0.tar.gz
--2026-05-28 10:12:44--  https://github.com/redis/redis/archive/refs/tags/8.8.0.tar.gz
Resolving github.com (github.com)... 20.205.243.166
Connecting to github.com (github.com)|20.205.243.166|:443... connected.
HTTP request sent, awaiting response...

由于小编这边并没有使用魔法,所以连接 github 会比较慢,一般都是超时下载失败,所以小编就直接使用另外一个下载地址:Index of /releases/

复制代码
[root@toast-server ~]# wget https://download.redis.io/releases/redis-8.8.0.tar.gz
--2026-05-28 10:15:09--  https://download.redis.io/releases/redis-8.8.0.tar.gz
Resolving download.redis.io (download.redis.io)... 104.18.27.34, 104.18.26.34, 2606:4700::6812:1b22, ...
Connecting to download.redis.io (download.redis.io)|104.18.27.34|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4480031 (4.3M) [application/octet-stream]
Saving to: 'redis-8.8.0.tar.gz'

redis-8.8.0.tar.gz                              100%[=====================================================================================================>]   4.27M   444KB/s    in 13s     

2026-05-28 10:15:23 (343 KB/s) - 'redis-8.8.0.tar.gz' saved [4480031/4480031]


[root@toast-server ~]# ll
-rw-r--r-- 1 root root   4480031 May 25 17:52 redis-8.8.0.tar.gz

3.3 解压 Redis 源码包

查看 源码部署包的下载位置

复制代码
[root@toast-server src]# pwd  # 小编的源码部署包放在  /usr/local/src 目录下
/usr/local/src
[root@toast-server src]# ls
redis-8.8.0.tar.gz

开始解压源码部署包,并解压到指定的目录下

复制代码
[root@toast-server src]# tar xzvf /usr/local/src/redis-8.8.0.tar.gz -C /usr/local/src/
[root@toast-server src]# ll
total 4380
drwxrwxr-x 10 root root    4096 May 25 17:26 redis-8.8.0
-rw-r--r--  1 root root 4480031 May 25 17:52 redis-8.8.0.tar.gz

3.4 编译redis

拿到源码之后,进入 redis-8.8.0/src 源码目录之后,对源码进行编译成为 二进制文件,毕竟操作系统只认二进制文件,就像 java 应用要使用maven, gradle 进行打包成一个可执行jar包。过程是一样的。

复制代码
[root@toast-server src]# cd redis-8.8.0/src/
[root@toast-server src]# make   # 内网可不考虑 TLS 的配置

由于小编的服务器是出于公网环境所以需要开启 TLS 的配置。所以就不直接 make 而是追加一个配置如下命令

复制代码
[root@toast-server src]# dnf install -y openssl-devel # 确保系统拥有这个依赖库,这个是提供TLS功能库
[root@toast-server src]# make BUILD_TLS=yes

之后

复制代码
make[1]: Leaving directory '/usr/local/src/redis-8.8.0/tests/modules'

Hint: It's a good idea to run 'make test' ;)  # 看到这个表示编译成功
[root@toast-server src]#

3.5 安装redis

对编译后的 Redis 程序进行安装,将其安装在 "/usr/local/redis" 目录之中

复制代码
[root@toast-server src]# make  PREFIX=/usr/local/redis install
make -C ../tests/modules
make[1]: Entering directory '/usr/local/src/redis-8.8.0/tests/modules'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/usr/local/src/redis-8.8.0/tests/modules'

Hint: It's a good idea to run 'make test' ;)

    INSTALL redis-server
    INSTALL redis-benchmark
    INSTALL redis-cli

查看安装的内容

复制代码
[root@toast-server src]# pwd
/usr/local/src/redis-8.8.0/src
[root@toast-server src]# ll /usr/local/redis
total 4
drwxr-xr-x 2 root root 4096 May 28 10:54 bin

3.6 配置Redis 的环境变量

为了方便后续服务的使用,将 Redis 命令目录配置到系统环境之中

复制代码
[root@toast-server redis]# vim /etc/profile

在profile文件末尾追加如下两行

复制代码
# Redis Environment Variables 
export REDIS_HOME=/usr/local/redis
export PATH=$PATH:$REDIS_HOME/bin

最后刷新配置信息使其生效

复制代码
[root@toast-server redis]# source /etc/profile
[root@toast-server redis]# redis-server --version
Redis server v=8.8.0 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=5db5ee081211f7be

# v=8.8.0 版本号 malloc=jemalloc-5.3.0 内存分配版本,
# bits=64 64软件包 build=5db5ee081211f7be 编译构建的唯一标识 ID

这样整个流程的软件安装已完成

相关推荐
毕设做完了吗?1 小时前
YOLO+paddlecor的智能车牌识别系统
人工智能·python·yolo·目标检测·计算机视觉
li星野1 小时前
RAG优化系列:自适应检索(Adaptive Retrieval)——让系统智能选择是否检索
人工智能·python·学习
weixin_BYSJ19871 小时前
springboot鹿邑县旅游网站99312(源码+文档)
java·javascript·spring boot·python·django·flask·php
H Journey1 小时前
python包和项目管理工具uv、conda介绍
python·conda·uv
星空椰10 小时前
Python 面向对象高级:继承与类定义详解
开发语言·python
凯瑟琳.奥古斯特10 小时前
高阶子查询题目精炼
开发语言·数据库·python·职场和发展·数据库开发
风之所往_10 小时前
Python 3.4 新特性全面总结
python
太阳上的雨天11 小时前
任何格式的文件转Markdown
python·ai
yaoxin52112311 小时前
419. 现代 Java IO 最佳实践 - 写入文本文件
java·windows·python