
图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

图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-3天):搭建Redis环境 → 掌握基础命令 → 熟悉五大数据结构的基本用法 → 完成简单的CRUD操作。
- 进阶阶段(4-7天):深入五大数据结构的业务适配 → 掌握Redis持久化(RDB/AOF) → 实现分布式锁 → 理解Redis事务 → 完成商品秒杀实战。
- 企业阶段(1-3个月):学习Redis主从复制/哨兵模式/集群 → 掌握Redis性能调优 → 解决缓存穿透/击穿/雪崩 → 结合Java/Go/Node.js开发实际项目 → 掌握Redis运维技巧。
Redis核心优势与适用场景:
- 核心优势:纯内存高速读写、毫秒级响应、10万+QPS高并发、五大数据结构灵活适配、支持持久化和高可用。
- 适用场景:缓存系统、商品秒杀、分布式锁、会话存储、消息队列、排行榜、数据去重、计数器/点赞数。
延伸学习推荐
Redis搭配编程语言开发企业级项目,推荐学习:
数据库全栈学习、
Redis官方文档(最权威),
结合实战项目巩固,快速从Redis新手进阶为Redis开发高手!

渝公网安备50022402001073号
Pingback: 小众数据库全解:15+款不常用数据库分类与选型指南 - 小白 编程 笔记