Redis的五种基本数据类型及基本语法
无数据再查 MySQL,查到后写入 Redis,下次直接命中。逻辑:手机号为 Key,验证码为 Value,设置 5 分钟 / 10 分钟过期,超时自动失效。网站 / APP 登录后生成 JWT/Token,存入 Redis,并设置过期时间;短期有效、一次性数据,利用 Redis Key 自动过期特性。分布式部署的服务器,需要统一存放用户登录状态、Token。电商:商品详情、商品分类、店铺信息、首
Redis的五种基本数据类型及基本语法
一、Redis的基本概念
1.1 什么是Redis
- Redis 全称 Remote Dictionary Server(远程字典服务),是一款开源、高性能、基于内存的键值(Key-Value)型数据库,同时也常被称作缓存中间件。
1.2 Redis核心特点
- 数据存内存:绝大部分数据运行在内存中,读写速度极快,每秒可处理十万级请求,远快于 MySQL 等磁盘数据库。
- 支持多数据类型:不只是简单字符串,还支持列表、哈希、集合、有序集合、位图、地理坐标等丰富结构。
- 持久化能力:虽然基于内存,但支持把数据落地到硬盘,断电 / 重启后数据不丢失。
- 单线程模型:主线程处理命令,避免多线程竞争,性能稳定;同时支持异步 IO、集群、主从复制。
- 跨语言、跨平台:Java、Python、Go、PHP 等所有主流编程语言都能轻松调用,几乎所有后端项目都在使用。
简单理解:Redis 就是一个 “高速内存仓库”,用来帮传统数据库分担压力、加速访问。
1.3 Redis应用场景
- 热点数据缓存(使用最多)
场景说明
网站 / APP 中访问量极大、更新频率低的数据,全部缓存到 Redis。
实际案例
电商:商品详情、商品分类、店铺信息、首页轮播、活动页面
资讯平台:新闻列表、文章内容、热搜榜单
官网 / 后台:字典数据、地区编码、配置参数
流程:用户请求 → 先查 Redis → 有数据直接返回;无数据再查 MySQL,查到后写入 Redis,下次直接命中。
-
会话(Session)共享 / 登录凭证存储
场景说明
分布式部署的服务器,需要统一存放用户登录状态、Token。
实际案例
网站 / APP 登录后生成 JWT/Token,存入 Redis,并设置过期时间;
所有服务统一从 Redis 校验登录状态,实现多台服务器登录状态互通。 -
验证码、短信 / 邮箱验证码
场景说明
短期有效、一次性数据,利用 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
• 购物车操作
- 添加商品:hset cart:1001 10088 1
- 增加数量:hincrby cart:1001 10088 1
- 商品总数:hlen cart:1001
- 删除商品:hdel cart:1001 10088
- 获取购物车所有商品: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),根据分数自动排序,元素唯一、有序

实例
四、整体学习小结
- Redis 定位为高速内存缓存,弥补磁盘数据库性能短板,是后端开发必备中间件。
- 五种数据类型分工明确:
◦ 简单文本 / 数值 → String
◦ 实体对象(用户、购物车)→ Hash
◦ 队列、栈、流式数据 → List
◦ 去重、关系运算、抽奖 → Set
◦ 排名、有序加权数据 → ZSet - 所有命令围绕「增、删、改、查、统计、运算」设计,结合业务场景记忆,更容易掌握。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)