Redis 零基础入门到实战:数据结构 + 常用命令 + 场景全覆盖

前言

在当下高并发、高性能的后端开发场景中,Redis 已经成为必备技能。无论是缓存、分布式锁、消息队列,还是排行榜、地理位置计算,Redis 都能轻松胜任。本文从零开始,带你全面掌握 Redis 核心知识:基础简介、八大常用数据结构、高频命令、实战场景,让你快速上手 Redis,轻松应对开发与面试。

一、Redis 数据库核心简介

Redis(Remote Dictionary Server)是一款开源、基于内存、高性能的非关系型键值对数据库,支持多种数据结构,自带持久化机制,读写速度可达 10w+ QPS,是后端服务的 "性能加速器"。

1. 核心特性
  • 存储形式:唯一键 + 对应值(Key-Value),键全局唯一。
  • 数据位置内存存储,保证极致读写速度;支持 RDB+AOF 持久化,数据落盘不丢失。
  • 原子性:单命令原子操作,支持事务,保证并发安全。
  • 丰富操作:支持数据增删改查、集合运算、自动排序、位运算等。
2. 核心应用场景
  • 热点数据缓存(数据库查询结果、页面静态化内容)
  • 用户会话存储(登录状态、购物车)
  • 实时数据分析(计数、排序、统计)
  • 轻量级消息队列、发布订阅系统
  • 排行榜、分布式锁、地理位置服务、去重统计

二、Redis 通用命令(所有数据类型通用)

通用命令不区分数据结构,日常运维高频使用,生产环境慎用 KEYS 命令(全库遍历,阻塞主线程)。

表格

命令 作用 示例
KEYS pattern 匹配查找键 KEYS user:*
DEL key [key...] 删除键 DEL user:1 product:1
EXISTS key 判断键是否存在 EXISTS user:1
EXPIRE key seconds 设置键过期时间 EXPIRE user:1 60
TTL key 查看键剩余过期时间 TTL user:1

实操示例

复制代码
# 设置测试数据
SET user:1 "张三"
SET product:1 "手机"

# 查找以 user: 开头的键
KEYS user:*  # 返回 user:1

# 设置过期时间
EXPIRE user:1 30

# 查看剩余时间
TTL user:1  # 返回剩余秒数

三、Redis 八大数据结构 + 命令 + 实战场景

Redis 键(Key)默认是字符串,值(Value)支持多种类型,不同类型对应不同业务场景,下面逐一拆解。

1. String(字符串)------ 最基础数据类型

特性 :可存字符串、整数、浮点数、二进制文件(图片 / 视频),最大存储 512MB。 适用场景 :缓存、Token、分布式锁、计数器、库存。 常用命令

复制代码
SET key value        # 设置键值
GET key              # 获取值
MSET k1 v1 k2 v2     # 批量设置
MGET k1 k2           # 批量获取
INCR key             # 整数自增 1
INCRBY key 5         # 整数自增指定步长
SETNX key value      # 键不存在时设置(分布式锁核心)
SETEX key 60 value    # 设置带过期时间的键

实战:商品库存扣减、用户登录次数统计。

2. Hash(哈希)------ 存储对象神器

特性 :键 → 字段 - 值映射,类似 Java HashMap,支持字段级操作,无需序列化整个对象。 适用场景 :用户信息、商品详情、配置项。 常用命令

复制代码
HSET key field value    # 设置字段值
HGET key field          # 获取单个字段
HMSET key f1 v1 f2 v2   # 批量设置字段
HMGET key f1 f2         # 批量获取字段
HGETALL key             # 获取所有字段+值
HINCRBY key field 1     # 字段值自增

Python 实操

复制代码
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
# 存储用户信息
r.hset("user:1", mapping={"name":"张三","age":20,"city":"合肥"})
# 获取所有信息
print(r.hgetall("user:1"))
3. List(列表)------ 双向链表

特性 :有序、可重复,头尾增删 O (1),支持阻塞读取。 适用场景 :消息队列、评论列表、点赞记录、任务队列。 常用命令

复制代码
LPUSH key ele1 ele2     # 左侧插入
RPUSH key ele1 ele2     # 右侧插入
LPOP key                # 左侧弹出
RPOP key                # 右侧弹出
LRANGE key 0 -1         # 查询所有元素
BLPOP key 10            # 阻塞弹出,超时 10s

实战:简易消息队列,生产者 RPUSH,消费者 BLPOP。

4. Set(集合)------ 无序去重

特性 :元素唯一、无序,底层哈希表,支持交集 / 并集 / 差集。 适用场景 :好友关注、共同爱好、标签系统、抽奖。 常用命令

复制代码
SADD key mem1 mem2      # 添加元素
SREM key mem            # 删除元素
SMEMBERS key            # 查看所有元素
SINTER key1 key2        # 求交集
SUNION key1 key2        # 求并集
SCARD key               # 统计元素个数

实战:计算两个用户的共同关注好友。

5. Sorted Set(有序集合)------ 可排序的集合

特性 :元素唯一,按分数(score)自动排序,底层跳表 + 哈希表,查询 O (logN)。 适用场景 :排行榜、优先级队列、延时队列。 常用命令

复制代码
ZADD key score mem      # 添加元素+分数
ZRANK key mem           # 升序排名
ZREVRANK key mem        # 降序排名
ZRANGE key 0 9          # 取前 10 名
ZINCRBY key 5 mem       # 增加分数

实战:游戏积分排行榜、商品销量排行。

6. Geospatial(地理空间)------LBS 服务

特性 :基于 Sorted Set 实现,存储经纬度,计算距离、范围查找。 适用场景 :附近的人、外卖配送、地图服务。 常用命令

复制代码
GEOADD key lon lat mem  # 添加地理位置
GEODIST key m1 m2 km    # 计算距离(千米)
GEORADIUS key lon lat 5 km  # 查找 5km 内元素
7. HyperLogLog------ 基数统计

特性 :固定内存(约 12KB),误差 0.81%,高效统计去重数量。 适用场景 :UV 统计、独立 IP 数、用户活跃数。 常用命令

复制代码
PFADD key ele1 ele2     # 添加元素
PFCOUNT key             # 统计基数
PFMERGE dest src1 src2  # 合并统计
8. Bitmap(位图)------ 位存储

特性 :按位存储 0/1,极致节省内存,适合布尔状态。 适用场景 :签到、在线状态、权限标记。 常用命令

复制代码
SETBIT key offset 1     # 设置位
GETBIT key offset       # 获取位
BITCOUNT key            # 统计 1 的个数

四、Redis Key 命名规范(生产必备)

Redis 没有表概念,通过命名空间区分业务,避免键冲突,规范如下:

  • 格式:业务名:对象名:ID
  • 示例:
    • 用户信息:shop:user:1001
    • 商品信息:shop:product:1001
  • 优势:清晰易读、方便批量管理、避免冲突。
相关推荐
bnmoel15 小时前
数据结构深度剖析二叉树・中篇:堆的概念及结构 ,实现应用全解析
数据结构·算法·二叉树··top-k问题
fu的博客15 小时前
【数据结构15】哈夫曼树构建、编码(附手绘图解)
数据结构
小a彤15 小时前
atvoss:Vector 算子子程序模板库,让 Ascend C 开发效率提升 5 倍
android·c语言·数据库
bnmoel15 小时前
数据结构深度剖析二叉树・上篇:基础概念、结构特性、存储结构全解析
c语言·数据结构·二叉树·
不爱洗脚的小滕15 小时前
【向量数据库】Milvus 稠密与稀疏向量核心解析
数据库·人工智能·milvus
AI周红伟15 小时前
Windows 支持 Hermes Agent 吗:原生 Windows 安装 + WSL2 路径完整指南
数据库·人工智能·windows·阿里云·职场和发展·计算机外设
电商API_1800790524715 小时前
价格波动预警|用API实时监控淘宝京东商品价格,实现自动化竞品调价与捡漏
大数据·运维·数据库·人工智能·数据挖掘·自动化
Dlrb121115 小时前
数据结构-单链表与双链表
c语言·数据结构·链表·排序·双链表
问心无愧051315 小时前
ctf show web 入门173
数据库·笔记·sql·mysql