《Redis数据库》1.初识Redis

💡Yupureki:个人主页

✨个人专栏:《C++》 《算法》《Linux系统编程》《高并发内存池》《MySQL数据库》

《个人在线OJ平台》《Linux网络编程》《CMake自动化构建工具》《Redis数据库》


🌸Yupureki🌸的简介:


目录

[1. 初识Redis](#1. 初识Redis)

[1.1 什么是Redis](#1.1 什么是Redis)

[1.2 Redis VS MySQL](#1.2 Redis VS MySQL)

[1.3 Redis使用场景](#1.3 Redis使用场景)

[1.3.1 缓存(Cache)](#1.3.1 缓存(Cache))

[1.3.2 实时排行榜](#1.3.2 实时排行榜)

[1.3.3 分布式锁](#1.3.3 分布式锁)

[1.3.4 消息队列与异步任务](#1.3.4 消息队列与异步任务)

[2. Linux安装Redis](#2. Linux安装Redis)

[Ubuntu / Debian](#Ubuntu / Debian)

[RHEL / CentOS 7 / Fedora](#RHEL / CentOS 7 / Fedora)

[3. 打开Redis](#3. 打开Redis)


1. 初识Redis

1.1 什么是Redis

Redis (Remote Dictionary Server) 可以理解成一个超快、住在内存里的"数据结构百宝箱"

  • 数据在内存里 :读写速度极快(微秒级),但内存容量有限、断电会丢数据(不过它也有持久化机制来补救)。

  • 支持丰富的数据结构:不仅是简单的"键-值",还能直接操作字符串、哈希、列表、集合、有序集合、流等。

  • 常被用来:缓存、会话存储、排行榜、消息队列、实时计数器等。

Redis有多火?

假如现在有人问Redis的作者都有谁在使用Redis,我想他可以开句玩笑的回答:还有谁不使用
Redis?
当然这只是开玩笑,但是从Redis的官方公司统计来看,有很多重量级的公司都在使用

Redis,如国外的 Twitter、Instagram、Stack Overflow、Github等,国内就更多了,如果单单从体

量来统计,新浪微博可以说是全球最大的Redis使用者,除了新浪微博,还有像阿里巴巴、腾讯、搜狐、优酷土豆、美团、小米、唯品会等公司都是Redis的使用者。除此之外,许多开源技术像ELK等已经把Redis作为它们组件中的重要一环,而且Redis还提供了模块系统让第三方人员实现功能扩展,让Redis发挥出更大的威力。所以,可以这么说,熟练使用和运维Redis已经成为开发运维人员的一个必备技能。

1.2 Redis VS MySQL

已经有成熟的数据库-MySQL了,为什么还要学习Redis?

MySQL是一个十分稳定,安全的数据库,但问题是:不够方便,不够快

  • 数据在磁盘上:持久化可靠,服务器重启数据还在,适合保存核心业务数据。但存储在磁盘上导致IO开销过大,如果频繁访问数据会十分缓慢

  • 数据模型是"表格":数据库 → 表 → 一行行的记录,每行有固定的列(字段),非常规整。但很多数据不需要过于规范的表述,强行添加约束只会徒增管理成本

Redis 和 MySQL 的核心区别

对比维度 Redis MySQL
数据库类型 键值存储 / 数据结构服务器(非关系型) 关系型数据库(RDBMS)
存储位置 主要在内存,也可持久化到磁盘 主要存储在磁盘,也有内存缓存区
速度 极快(微秒级读写) 相对慢(毫秒级,受磁盘 I/O 影响)
数据模型 键值对,值可以是字符串、列表、集合等 严格的表、行、列结构
查询语言 简单的命令,如 SET key value, GET key 标准 SQL,如 SELECT ... WHERE ... JOIN
持久化 可选(RDB 快照、AOF 日志),有时会牺牲少量数据 默认强持久化,保证数据不丢
事务 支持简单事务(MULTI/EXEC),弱 ACID 完整的事务支持(ACID),可回滚
扩展性 易于水平扩展(集群、分片) 可主从复制、分库分表,但复杂一些
典型场景 缓存、会话、排行榜、发布订阅、计数器 业务系统的主数据库(订单、用户、账务)

学习Redis,不是因为 MySQL 不够,而是为了让整个系统扛得住流量、做得快功能、稳得住架构。它们合作时,MySQL 是"最后的真相源",Redis 是"性能的加速器",两个都懂才能写出真正落地的优秀系统。

绝大多数应用会同时用到它们

复制代码
用户请求  
    ↓  
应用服务器  
    ↓  
1. 先查 Redis(缓存) → 有就直接返回,超快  
    ↓ (无)  
2. 再查 MySQL(主数据库) → 把结果写入 Redis 并返回  

1.3 Redis使用场景

1.3.1 缓存(Cache)

最经典用途,加速读、保护数据库。

  • 模式:Cache-Aside(旁路缓存),读先查 Redis,未命中则查 DB 并回写;写时更新 DB 后失效缓存。

  • 技巧:设置过期时间 + 内存淘汰策略,预防雪崩(过期时间加随机)、击穿(互斥锁/逻辑过期)、穿透(布隆过滤器/空值缓存)。

1.3.2 实时排行榜

利用 Sorted Set,成员为 ID,分数为积分/时间。命令:

  • ZADD 更新分数

  • ZREVRANGE/ZRANGE 取 Top N

  • ZSCORE 查个人排名

    适用:游戏排行、销量热榜、文章热度榜。

1.3.3 分布式锁

SET key value NX PX timeout 实现互斥。注意锁续期(Redisson 的 Watch Dog)和误删问题(value 用唯一标识,释放时 Lua 判断),高要求场景可考虑 Redlock 算法。

1.3.4 消息队列与异步任务

  • ListLPUSH + BRPOP 实现简单的生产者-消费者阻塞队列。

  • Streams(Redis 5.0+):支持消费者组、ACK、消息回溯,可靠性和功能更强,可替代轻量级 MQ。

  • Pub/Sub:即时广播,适合实时通知、聊天室,但不持久化,断线消息会丢。

2. Linux安装Redis

我们直接使用包管理器进行安装,这是最简单,最快的方法

Ubuntu / Debian

bash 复制代码
# 1. 更新索引
sudo apt update

# 2. 安装 redis-server(一般会附带 redis-cli)
sudo apt install -y redis-server

# 3. 启动并设置开机自启
sudo systemctl enable redis-server
sudo systemctl start redis-server

# 4. 检查状态
sudo systemctl status redis-server

RHEL / CentOS 7 / Fedora

bash 复制代码
# 1. 安装 EPEL 仓库(CentOS 7 需要)
sudo yum install -y epel-release

# 2. 安装 Redis
sudo yum install -y redis

# 3. 启动与自启
sudo systemctl enable redis
sudo systemctl start redis

# 4. 查看状态
sudo systemctl status redis

验证连接

直接运行 redis-cli ping,返回 PONG 即表示正常。

3. 打开Redis

Redis和MySQL一样,其核心是网络服务器,因此我们需要打开Redis的客户端,用客户端访问服务器

bash 复制代码
redis-cli

当你看见127.0.0.1:6379时,就意味着成功进入了Redis的客户端

相关推荐
Lyyaoo.1 小时前
Redis实现分布式锁
数据库·redis·分布式
张~颜1 小时前
autovacuum
数据库·postgresql
山峰哥1 小时前
SQL优化从入门到精通:20个案例破解性能密码
数据库·sql·oracle·性能优化·深度优先
努力努力再努力wz1 小时前
【MySQL进阶系列】拒绝冗余SQL:带你透彻理解视图的底层逻辑
android·c语言·数据结构·数据库·c++·sql·mysql
历程里程碑1 小时前
MySQL数据类型全解析 + 代码实操讲解
大数据·开发语言·数据库·sql·mysql·elasticsearch·搜索引擎
杨云龙UP1 小时前
Windows Server 2012 环境下 Oracle 11.2 使用 expdp 实现自动备份、异地复制与定期清理_20260504
服务器·数据库·windows·mysql·docker·oracle·容器
nbwenren2 小时前
MySQL数据库误删恢复_mysql 数据 误删
数据库·mysql·adb
Rick19932 小时前
sql慢查询优化
数据库
IT邦德2 小时前
OGG 26ai实时同步Oracle
数据库·oracle