Redis的五种基本数据类型及基本语法

一、Redis的基本概念

1.1 什么是Redis

  • Redis 全称 Remote Dictionary Server(远程字典服务),是一款开源、高性能、基于内存的键值(Key-Value)型数据库,同时也常被称作缓存中间件

1.2 Redis核心特点

  1. 数据存内存:绝大部分数据运行在内存中,读写速度极快,每秒可处理十万级请求,远快于 MySQL 等磁盘数据库。
  2. 支持多数据类型:不只是简单字符串,还支持列表、哈希、集合、有序集合、位图、地理坐标等丰富结构。
  3. 持久化能力:虽然基于内存,但支持把数据落地到硬盘,断电 / 重启后数据不丢失。
  4. 单线程模型:主线程处理命令,避免多线程竞争,性能稳定;同时支持异步 IO、集群、主从复制。
  5. 跨语言、跨平台:Java、Python、Go、PHP 等所有主流编程语言都能轻松调用,几乎所有后端项目都在使用。

简单理解:Redis 就是一个 “高速内存仓库”,用来帮传统数据库分担压力、加速访问。


1.3 Redis应用场景

  1. 热点数据缓存(使用最多)
    场景说明
    网站 / APP 中访问量极大、更新频率低的数据,全部缓存到 Redis。

实际案例
电商:商品详情、商品分类、店铺信息、首页轮播、活动页面

资讯平台:新闻列表、文章内容、热搜榜单
官网 / 后台:字典数据、地区编码、配置参数
流程:用户请求 → 先查 Redis → 有数据直接返回;无数据再查 MySQL,查到后写入 Redis,下次直接命中。

  1. 会话(Session)共享 / 登录凭证存储
    场景说明
    分布式部署的服务器,需要统一存放用户登录状态、Token。
    实际案例
    网站 / APP 登录后生成 JWT/Token,存入 Redis,并设置过期时间;
    所有服务统一从 Redis 校验登录状态,实现多台服务器登录状态互通。

  2. 验证码、短信 / 邮箱验证码
    场景说明
    短期有效、一次性数据,利用 Redis Key 自动过期特性。
    实际案例
    手机验证码、邮箱验证码、找回密码验证码。
    逻辑:手机号为 Key,验证码为 Value,设置 5 分钟 / 10 分钟过期,超时自动失效。


1.3 Redis与MySql区别

数据库 存储位置 速度 适用场景
MySQL 硬盘 持久化核心数据(用户、订单、商品、财务数据)
Redis 内存 极快 缓存、临时数据、计数、排行、限流、分布式组件

二、五种基本数据类型及基础语法

1. String 字符串类型

核心特点:以 key-value 形式存储,value 可以是字符串、数字、二进制数据

在这里插入图片描述

基础语法

命令 说明
SET key value 存入字符串键值对
MSET key value [key value …] 批量存储字符串键值对
SETNX key value 存入一个不存在的字符串键值对
GET key 获取一个字符串键值
MGET key [key …] 批量获取字符串键值
DEL key [key …] 删除一个键
EXPIRE key seconds 设置一个键的过期时间(秒)
INCR key 将key中储存的数字值加1
DECR key 将key中储存的数字值减1
INCRBY key increment 将key所储存的值加上increment
DECRBY key decrement 将key所储存的值减去decrement

2.Hash 哈希类型

核心特点:类似 Java 的 Map / Python 的字典,一个 key 对应多个 field-value 对,适合存储结构化对象。

在这里插入图片描述

基础语法

命令 说明
HSET key field value 存储一个哈希表 key 的键值
HSETNX key field value 存储一个不存在的哈希表 key 的键值
HMSET key field value [field value …] 在一个哈希表 key 中存储多个键值对
HGET key field 获取哈希表 key 对应的 field 键值
HMGET key field [field …] 批量获取哈希表 key 中多个 field 键值
HDEL key field [field …] 删除哈希表 key 中的 field 键值
HLEN key 返回哈希表 key 中 field 的数量
HGETALL key 返回哈希表 key 中所有的键值
HINCRBY key field increment 为哈希表 key 中 field 键的值加上增量 increment

实例:

在这里插入图片描述

应用场景

  • 电商购物车
    1.以用户id为key
    2.商品id为field
    3.商品数量为value

• 购物车操作

  1. 添加商品:hset cart:1001 10088 1
  2. 增加数量:hincrby cart:1001 10088 1
  3. 商品总数:hlen cart:1001
  4. 删除商品:hdel cart:1001 10088
  5. 获取购物车所有商品:hgetall cart:1001
    在这里插入图片描述

3.List 列表类型

核心特点:有序可重复的字符串列表,底层是双向链表,支持从左右两端快速插入、删除。

在这里插入图片描述

基础语法

命令 说明
LPUSH key value [value …] 将一个或多个值 value 插入到 key 列表的表头(最左边)
RPUSH key value [value …] 将一个或多个值 value 插入到 key 列表的表尾(最右边)
LPOP key 移除并返回 key 列表的头元素
RPOP key 移除并返回 key 列表的尾元素
LRANGE key start stop 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定
BLPOP key [key …] timeout 从 key 列表表头弹出一个元素,若无元素则阻塞等待 timeout 秒,timeout=0 永久阻塞
BRPOP key [key …] timeout 从 key 列表表尾弹出一个元素,若无元素则阻塞等待 timeout 秒,timeout=0 永久阻塞

实例

在这里插入图片描述
在这里插入图片描述

阻塞等待

  • BLPOP key [key …] timeout
    从key列表表头弹出一个元素,若列表中没有元素,阻塞等待
    timeout秒,如果timeout=0,一直阻塞等待
  • BRPOP key [key …] timeout
    从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待
    timeout秒,如果timeout=0,一直阻塞等待

应用场景

  • Stack(栈) = LPUSH + LPOP
  • Queue(队列)= LPUSH + RPOP
  • Blocking MQ(阻塞队列)= LPUSH + BRPOP
  • 视频列表、签到列表、排队机、简化版的MQ

4.set 集合类型

核心特点:无序、不可重复的字符串集合,自动去重

在这里插入图片描述

基础语法

命令 说明
ZADD key score member [[score member]…] 往有序集合 key 中加入带分值元素
ZREM key member [member …] 从有序集合 key 中删除元素
ZSCORE key member 返回有序集合 key 中元素 member 的分值
ZINCRBY key increment member 为有序集合 key 中元素 member 的分值加上 increment
ZCARD key 返回有序集合 key 中元素个数
ZRANGE key start stop [WITHSCORES] 正序获取有序集合 key 从 start 到 stop 下标的元素
ZREVRANGE key start stop [WITHSCORES] 倒序获取有序集合 key 从 start 到 stop 下标的元素
ZUNIONSTORE destkey numkeys key [key …] 有序集合并集计算
ZINTERSTORE destkey numkeys key [key …] 有序集合交集计算

实例

在这里插入图片描述
应用场景

  • 微信抽奖小程序
    1.点击参与抽奖加入集合
    SADD key {userlD}
    2.查看参与抽奖所有用户
    SMEMBERS key
    3.抽取count名中奖者
    SRANDMEMBER key [count] / SPOP key [count]

5.Zset 有序集合类型

核心特点:在 Set 基础上增加了分数(score),根据分数自动排序,元素唯一、有序

在这里插入图片描述

实例

在这里插入图片描述

四、整体学习小结

  1. Redis 定位为高速内存缓存,弥补磁盘数据库性能短板,是后端开发必备中间件。
  2. 五种数据类型分工明确:
    ◦ 简单文本 / 数值 → String
    ◦ 实体对象(用户、购物车)→ Hash
    ◦ 队列、栈、流式数据 → List
    ◦ 去重、关系运算、抽奖 → Set
    ◦ 排名、有序加权数据 → ZSet
  3. 所有命令围绕「增、删、改、查、统计、运算」设计,结合业务场景记忆,更容易掌握。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐