String 字符串类型
掌握 String 类型的特点与常用命令
理解原子操作与计数场景
能实现缓存、计数器等基础业务
核心讲解
String 是 Redis 最基础、最常用的类型,value 可以是字符串、数字、二进制数据,最大支持 512MB。
(1)核心特点
简单直观,适合绝大多数缓存场景
支持数字原子增减,天然适合计数器
可以存储 JSON、图片等二进制数据
单个 key 过大影响性能,建议单个 value 不超过 100KB
(2)常用命令
表格
命令 | 功能 |
|---|---|
| 设置键值,存在就覆盖 |
| 设置并指定过期时间(秒) |
| 不存在才设置,存在就失败,分布式锁用 |
| 设置并指定过期时间 |
| 获取值 |
| 设置新值,返回旧值 |
| 批量设置多个键 |
| 批量获取多个键 |
| 值 + 1,原子操作 |
| 值 + n |
| 值 - 1 |
| 值 - n |
| 值长度 |
| 追加内容 |
(3)适用场景
普通对象缓存:用户信息、商品信息、页面缓存
计数器:点赞、浏览量、库存、访问量
分布式锁:SETNX 实现
简单的 JSON 数据存储
操作示例
# ===== 基础读写 =====
SET user:1:name zhangsan
SET user:1:age 20
GET user:1:name
# ===== 带过期时间 =====
SET code:1234 5678 EX 300
# 5分钟过期的验证码
# ===== 不存在才设置(分布式锁) =====
SETNX lock:order true
# 返回1成功,返回0已存在
# ===== 批量操作 =====
MSET product:1:name 手机 product:1:price 3999 product:2:name 电脑 product:2:price 5999
MGET product:1:name product:1:price product:2:name
# ===== 原子计数器 =====
SET article:100:view 0
INCR article:100:view
# 浏览量+1,原子操作,并发安全
INCRBY article:100:view 10
# 一次加10
DECR article:100:view
# 减1
# ===== 追加 =====
APPEND user:1:name _test
GET user:1:name
# zhangsan_test
常见误区
什么都存 String:复杂结构用 Hash 更合适,不要把所有 JSON 都塞 String,每次修改都要全量读写
计数器不用 INCR:自己读出来加再写回去,并发会有问题,必须用 INCR 原子操作
大 String 不影响性能:单个 value 过大,读写、淘汰都会影响性能,大对象建议拆分或者存对象存储
SETNX 就是锁:基础 SETNX 是简易锁,有超时、续期、可重入等问题,复杂场景用 Redlock
课后练习
用 String 存储一个用户信息(姓名、年龄)
实现一个文章浏览量计数器,每次访问 + 1
用 SETNX 实现一个简单的分布式锁
思考:MGET/MSET 相比多次 GET/SET 有什么优势?

