Redis 入门到精通全攻略:100+命令从环境搭建到实战(附可直接运行代码)

Redis 入门到精通全攻略:本文打造Redis 入门到精通完整学习体系,从环境搭建、基础命令、五大数据结构(String/Hash/List/Set/ZSet)到CRUD核心操作、高级特性、商品秒杀实战及新手避坑指南,所有Redis命令可直接复制运行,搭配新手友好注释。Redis作为高性能内存键值数据库,是缓存、分布式锁、高并发秒杀项目的核心中间件,零基础跟着本文学,快速吃透Redis开发核心技能!

Redis 入门到精通 核心知识体系 环境搭建/命令/五大数据结构/实战优化

图1:Redis 入门到精通 核心知识体系

一、Redis 入门到精通:基础概念与环境搭建

学习Redis 入门到精通,首先要吃透核心概念:Redis(Remote Dictionary Server)是开源的内存级键值数据库,基于纯内存运行且支持磁盘持久化,拥有String、Hash、List、Set、ZSet五大核心数据结构,读写性能可达10万+QPS,毫秒级响应是其核心优势。Redis特别适配缓存、分布式锁、消息队列、高并发秒杀等场景,和传统关系型数据库MySQL相比,性能与灵活度优势显著,下面用表快速区分核心差异:

核心概念(对比MySQL,秒懂Redis核心差异)

特性 Redis MySQL
数据模型 键值型(Key-Value),五大数据结构 表结构(行/列),固定Schema
存储位置 内存为主,支持磁盘持久化 磁盘存储,内存仅做缓存
性能表现 毫秒级,10万+QPS超高并发 秒级响应,受磁盘IO限制
适用场景 缓存、秒杀、分布式锁、会话存储 结构化数据、事务性业务、持久化存储
语法风格 简洁命令行,新手易上手 SQL语法,学习成本稍高

3种Redis环境搭建方式(新手任选,无坑)

# 1. Docker一键安装(企业/开发首选,环境隔离,无系统污染)
# --name:容器名 -p:端口映射 -v:数据持久化 --appendonly yes:开启AOF持久化
docker run -d \
  --name redis \
  -p 6379:6379 \
  -v /data/redis:/data \
  redis:7.2 redis-server --appendonly yes

# 2. Windows/Linux本地安装(Redis新手本地测试首选)
# 官网下载:https://redis.io/download/ | Linux可直接yum/apt安装
# Linux安装命令:yum install redis -y / apt install redis-server -y
# 默认端口6379,默认无密码,生产环境必须配置密码

# 3. 云Redis(线上项目首选,无需运维,自带高可用)
# 阿里云/腾讯云/华为云均提供托管服务,免费版满足开发需求
# 连接方式:云控制台复制连接命令,直接粘贴即可使用

# 通用Redis连接命令(redis-cli,官方客户端必学)
redis-cli # 本地无密码连接
redis-cli -h 127.0.0.1 -p 6379 -a 123456 # 带密码远程连接
ping # 连接成功返回PONG,Redis新手必测命令

Redis基础命令速查(新手必背,入门第一步)

# 查看Redis服务状态,返回PONG则正常
ping
# 查看Redis版本信息
info server
# 查看当前数据库所有键(生产环境禁用,数据量大易阻塞)
keys *
# 高效查询当前数据库键总数(推荐使用)
dbsize
# 切换数据库(Redis默认16个库,编号0-15)
select 1
# 设置Redis访问密码(临时生效,重启失效)
config set requirepass 123456
# 验证密码
auth 123456
# 清空当前数据库数据(谨慎操作,不可逆)
flushdb
# 清空所有数据库数据(极其谨慎,线上禁止使用)
flushall

二、Redis 入门到精通:五大核心数据结构(灵魂知识点)

Redis 入门到精通的核心在于掌握五大数据结构,不同结构适配不同业务场景,合理选择能最大化发挥Redis的性能优势。所有Redis命令均支持直接复制运行,搭配详细注释,新手轻松上手:

1. String字符串(最基础、最常用)

Redis中最基础的数据类型,可存储字符串、数字、二进制数据,最大容量512MB,适配缓存、计数器、分布式锁等场景,是Redis新手最先掌握的结构。

# 设置键值对,可直接指定过期时间(ex=秒,px=毫秒)
set name "张三" ex 60 # 60秒后过期
# 获取键值
get name
# 仅当键不存在时设置值(分布式锁核心命令)
setnx lock:order 1 ex 10
# 数字自增1(秒杀库存、点赞数、浏览量核心命令)
incr view_count
# 数字自减1
decr stock
# 数字自增指定数值
incrby score 10
# 批量设置键值对(高效,减少网络请求)
mset user1 "张三" user2 "李四" user3 "王五"
# 批量获取键值对
mget user1 user2 user3
# 获取字符串长度
strlen name

2. Hash哈希(对象存储首选)

Redis的Hash是键值对的集合,类似Java中的Map,适合存储用户信息、商品详情等结构化对象,可单独操作某个字段,无需修改整个对象,节省内存且效率更高。

# 设置哈希对象的单个字段
hset user:1001 name "张三" age 18
# 批量设置哈希对象的多个字段
hset user:1001 gender "男" phone "13800138000"
# 获取哈希对象的单个字段值
hget user:1001 name
# 批量获取哈希对象的多个字段值
hmget user:1001 name age gender
# 获取哈希对象的所有字段和值
hgetall user:1001
# 获取哈希对象的所有字段名
hkeys user:1001
# 获取哈希对象的所有字段值
hvals user:1001
# 判断哈希对象的字段是否存在
hexists user:1001 phone
# 哈希字段数字自增
hincrby user:1001 age 2
# 删除哈希对象的指定字段
hdel user:1001 phone

3. List列表(有序可重复,消息队列适配)

Redis的List是有序的字符串列表,基于双向链表实现,增删快、查询慢,适合做消息队列、朋友圈评论列表、最新消息列表等场景。

# 左插入(从列表头部添加元素)
lpush msg:queue "订单1" "订单2" "订单3"
# 右插入(从列表尾部添加元素)
rpush msg:queue "订单4"
# 左弹出(从列表头部删除并返回元素)
lpop msg:queue
# 右弹出(从列表尾部删除并返回元素)
rpop msg:queue
# 查询列表指定范围的元素(0=第一个,-1=最后一个)
lrange msg:queue 0 -1
# 获取列表的长度
llen msg:queue
# 根据索引获取列表元素
lindex msg:queue 1

4. Set集合(无序不重复,去重/交集适配)

Redis的Set是无序的字符串集合,元素唯一不重复,支持交集、并集、差集操作,适合做数据去重、共同好友、抽奖、标签管理等场景。

# 向集合中添加一个或多个元素
sadd tag:1001 "Redis" "Java" "Python"
# 获取集合中的所有元素
smembers tag:1001
# 判断元素是否在集合中
sismember tag:1001 "Redis"
# 获取集合的元素个数
scard tag:1001
# 删除集合中的一个或多个元素
srem tag:1001 "Python"
# 求两个集合的交集(共同好友、共同标签核心命令)
sinter tag:1001 tag:1002
# 求两个集合的并集
sunion tag:1001 tag:1002
# 随机获取集合中的一个元素(抽奖核心命令)
srandmember tag:1001

5. ZSet有序集合(排序必备,排行榜适配)

Redis的ZSet是有序的集合,每个元素关联一个分数(score),通过分数排序,元素唯一,适合做排行榜、热度排序、优先级队列、成绩排名等场景,是Redis最实用的高级结构之一。

# 向有序集合中添加元素(score为排序分数,元素唯一)
zadd rank:score 95 "张三" 90 "李四" 98 "王五" 88 "赵六"
# 升序查询指定范围的元素(0=第一个,-1=最后一个)
zrange rank:score 0 -1
# 降序查询指定范围的元素并返回分数(排行榜常用)
zrevrange rank:score 0 -1 withscores
# 获取元素的分数
zscore rank:score "张三"
# 获取元素的降序排名(0=第一名,Redis核心排名命令)
zrevrank rank:score "王五"
# 元素分数自增指定数值
zincrby rank:score 2 "张三"
# 删除有序集合中的指定元素
zrem rank:score "赵六"
# 查询分数在指定范围的元素(80-95分)
zrangebyscore rank:score 80 95 withscores

三、Redis 入门到精通:CRUD核心命令实战(日常开发90%场景覆盖)

Redis的增删改查(CRUD)是日常开发最核心的操作,命令简洁高效,结合五大数据结构的特性,不同场景选择不同的操作方式,以下命令均为企业级实战写法,Redis新手可直接复制运行:

1. C – Create 新增数据(核心:按需选数据结构)

# String类型新增(单值/批量,推荐带过期时间)
set nickname "编程小白" ex 3600
mset age 20 city "北京" job "开发"

# Hash类型新增(对象数据首选)
hset user:2001 name "李四" age 22 gender "女" score 92

# List/Set/ZSet类型新增(按业务场景选择)
lpush comment:1001 "沙发" "写得真好"
sadd favor:2001 "文章1" "文章2"
zadd rank:read 1000 "文章1" 800 "文章2"

2. R – Read 查询数据(核心:高效查询,避免全量遍历)

# String类型查询(单值/批量)
get nickname
mget age city job

# Hash类型查询(指定字段/避免全量hgetall)
hmget user:2001 name age score

# List/Set/ZSet类型查询(按需查范围,不查全量)
lrange comment:1001 0 5 # 只查前6条评论
smembers favor:2001
zrevrange rank:read 0 9 withscores # 只查前10名阅读榜

# 通用查询(Redis新手必学)
exists nickname # 判断键是否存在
ttl nickname # 查看键的过期时间
type user:2001 # 查看键的数据类型

3. U – Update 修改数据(核心:精准修改,避免覆盖)

# String类型修改(直接覆盖/数字自增)
set nickname "编程大神"
incrby age 1

# Hash类型修改(精准修改单个字段,核心优势)
hset user:2001 age 23 score 95

# ZSet类型修改(修改分数,排行榜核心)
zincrby rank:read 200 "文章1"
zadd rank:read 1500 "文章1" # 直接覆盖分数

# 通用修改(延长过期时间)
expire nickname 7200 # 延长至2小时过期
persist nickname # 取消过期时间,永久保存

4. D – Delete 删除数据(核心:谨慎操作,不可逆)

# 删除指定键(最常用,支持批量删除)
del nickname age
hdel user:2001 gender # Hash类型删除指定字段
zrem rank:read "文章2" # ZSet类型删除指定元素

# 批量删除指定前缀的键(Redis新手慎用,生产环境需谨慎)
# redis-cli --scan --pattern "user:*" | xargs redis-cli del

# 清空数据(线上禁止使用,Redis新手测试需注意)
flushdb # 清空当前库
# flushall # 清空所有库

四、Redis 入门到精通:高级特性(企业级开发必备)

掌握Redis的高级特性,才能胜任企业级开发,解决持久化、分布式锁、高可用等实际问题,以下是Redis核心高级特性,搭配实战命令,零基础也能理解:

1. 持久化(核心:防止Redis重启数据丢失)

Redis是内存数据库,默认重启后数据丢失,持久化是将内存数据保存到磁盘的机制,支持RDB和AOF两种方式,生产环境推荐开启AOF,兼顾性能和数据安全性。

# RDB持久化:快照式,定时保存全量数据(默认开启)
save # 同步保存,阻塞Redis,生产禁用
bgsave # 异步保存,推荐使用(后台执行,不阻塞)
# 配置规则:60秒内1000次修改则自动bgsave
# save 60 1000

# AOF持久化:日志式,记录所有写命令(推荐开启)
config set appendonly yes # 开启AOF
config set appendfsync everysec # 每秒同步一次(平衡性能和安全)
# AOF重写:压缩日志文件,删除无效命令
bgrewriteaof # 异步重写,推荐使用

2. 分布式锁(核心:解决高并发资源竞争,秒杀必备)

Redis的分布式锁是企业级高并发开发的核心,基于setnx+ex原子命令实现,解决多服务、多实例的资源竞争问题,如商品秒杀、订单创建、防止重复提交等场景。

# 加锁核心命令:set nx ex 原子操作(避免死锁,必须加过期时间)
# lock:order为锁名,1为值,nx=仅当锁不存在时创建,ex=10秒过期
set lock:order 1 nx ex 10

# 解锁核心命令:删除锁名(业务执行完成后释放)
del lock:order

# 秒杀实战:加锁→扣库存→解锁(超卖安全)
set lock:seckill:1001 1 nx ex 5
decr stock:1001
del lock:seckill:1001

3. 事务(核心:批量命令原子执行)

Redis的事务支持批量命令的原子执行,通过multi开启事务、exec执行事务、discard取消事务,注意:Redis事务仅保证命令批量执行,不支持回滚,执行过程中出错不会中断。

# 开启Redis事务
multi
# 加入事务的命令(批量操作,不会立即执行)
set a 1
set b 2
incr a
# 执行事务(所有命令一次性执行,原子操作)
exec
# 取消事务(放弃所有加入的命令)
# discard

Redis 入门到精通 实战命令演示 秒杀系统/分布式锁/持久化

图2:Redis 入门到精通 实战命令演示

五、Redis 入门到精通:完整实战案例(商品秒杀系统)

结合Redis的核心命令和高级特性,打造企业级商品秒杀系统,所有Redis命令可直接复制运行,零基础跑通完整实战流程,巩固Redis 入门到精通的核心知识点,解决超卖、死锁、高并发等实际问题:

# 秒杀系统实战:初始化数据(商品ID:1001,库存:100)
set stock:1001 100 # 初始化商品库存
sadd seckill:user:1001 "" # 初始化秒杀用户集合,用于去重

# 秒杀核心流程:一步一执行,Redis新手可直接复制
1. # 加锁:防止多线程同时扣库存,设置5秒过期避免死锁
   set lock:seckill:1001 1 nx ex 5
2. # 判断库存是否大于0,避免超卖
   get stock:1001 # 库存>0则继续,否则秒杀结束
3. # 判断用户是否已秒杀,避免重复秒杀
   sismember seckill:user:1001 "uid:666" # 返回0则继续
4. # 扣减库存:原子操作,超卖安全
   decr stock:1001
5. # 记录秒杀用户:加入集合,实现去重
   sadd seckill:user:1001 "uid:666"
6. # 解锁:业务执行完成,释放锁
   del lock:seckill:1001

# 秒杀系统查询命令
get stock:1001 # 查询剩余库存
scard seckill:user:1001 # 查询秒杀成功人数
smembers seckill:user:1001 # 查询秒杀成功用户ID

六、Redis 入门到精通:新手避坑指南(100%踩坑点全覆盖)

Redis新手学习和开发中,很容易因操作不当导致Redis阻塞、数据丢失、服务崩溃,以下是90%的Redis新手都会踩的坑,附详细解决方法,帮你避坑少走弯路:

避坑1:生产环境使用keys *命令

keys *会遍历Redis所有键,数据量大时直接导致Redis阻塞,线上服务卡死!解决:用scan命令替代,分批遍历;生产环境禁用keys *、flushdb、flushall等高危命令。

避坑2:不设置键的过期时间

Redis是内存数据库,内存资源有限,无限存储未过期的键会导致内存溢出、服务崩溃!解决:所有非永久数据必须设置过期时间(set ex/expire),合理设置过期策略,避免内存泄漏。

避坑3:分布式锁未设置过期时间

仅用setnx加锁,未设置过期时间,若业务执行异常(如服务宕机),锁无法释放,导致死锁,所有请求阻塞!解决:必须使用set nx ex原子命令加锁,强制设置过期时间,避免死锁。

避坑4:滥用hgetall命令查询大Hash对象

hgetall会查询Hash对象的所有字段和值,若Hash对象字段过多(如上万字段),会导致Redis阻塞,网络IO暴涨!解决:用hmget指定需要的字段,避免全量查询,大Hash对象拆分多个小Hash。

避坑5:忽略Redis大Key问题

存储超大字符串、超大集合/列表(大Key,一般指大于10KB),会导致Redis序列化/反序列化耗时、网络传输慢,性能急剧下降!解决:拆分大Key,避免单键存储大量数据,定期检测大Key并优化。

避坑6:未开启Redis持久化

默认情况下Redis仅开启RDB,若Redis意外重启,RDB快照之间的数据会丢失!解决:生产环境同时开启RDB+AOF,兼顾性能和数据安全性,避免数据丢失。

七、Redis 入门到精通:学习路线与总结

本文打造了Redis 入门到精通的完整学习体系,从基础概念、环境搭建、核心命令,到五大数据结构、CRUD实战、高级特性,再到商品秒杀实战和新手避坑指南,所有Redis命令可直接复制运行,零基础也能快速掌握Redis开发核心技能。Redis作为高性能内存数据库,是互联网开发的必备技能,掌握后可轻松应对缓存、分布式锁、高并发秒杀等企业级开发场景。

Redis 入门到精通分三阶学习路线(循序渐进,不走弯路):

  1. 入门阶段(1-3天):搭建Redis环境 → 掌握基础命令 → 熟悉五大数据结构的基本用法 → 完成简单的CRUD操作。
  2. 进阶阶段(4-7天):深入五大数据结构的业务适配 → 掌握Redis持久化(RDB/AOF) → 实现分布式锁 → 理解Redis事务 → 完成商品秒杀实战。
  3. 企业阶段(1-3个月):学习Redis主从复制/哨兵模式/集群 → 掌握Redis性能调优 → 解决缓存穿透/击穿/雪崩 → 结合Java/Go/Node.js开发实际项目 → 掌握Redis运维技巧。

Redis核心优势与适用场景:

  • 核心优势:纯内存高速读写、毫秒级响应、10万+QPS高并发、五大数据结构灵活适配、支持持久化和高可用。
  • 适用场景:缓存系统、商品秒杀、分布式锁、会话存储、消息队列、排行榜、数据去重、计数器/点赞数。

延伸学习推荐

Redis搭配编程语言开发企业级项目,推荐学习:
数据库全栈学习
Redis官方文档(最权威)
结合实战项目巩固,快速从Redis新手进阶为Redis开发高手!

本文为「小白编程笔记」原创 · Redis 入门到精通全解 | Redis 新手入门全攻略,转载请注明出处

1人评论了“Redis 入门到精通全攻略:100+命令从环境搭建到实战(附可直接运行代码)”

  1. Pingback: 小众数据库全解:15+款不常用数据库分类与选型指南 - 小白 编程 笔记

发表评论

滚动至顶部
渝公网安备50022402001073号  |  渝ICP备2026004448号   © 2026 小白编程笔记