String 与计数器
约 544 字大约 2 分钟
布欧-Lewyon
2026-05-15
String 是 Redis 最基础的类型。最大 512MB,支持自增自减和二进制安全。
基础操作
# SET / GET
127.0.0.1:6379> SET name "Alice"
127.0.0.1:6379> GET name
"Alice"
# 批量
127.0.0.1:6379> MSET k1 v1 k2 v2
127.0.0.1:6379> MGET k1 k2
1) "v1"
2) "v2"
# 不存在才设置(分布式锁基础)
127.0.0.1:6379> SETNX lock:task "locked"
(integer) 1 # 设置成功
127.0.0.1:6379> SETNX lock:task "locked"
(integer) 0 # 已存在,设置失败
# 获取并设置新值
127.0.0.1:6379> GETSET counter "10" # 返回旧值,设置新值
# 追加字符串
127.0.0.1:6379> APPEND name " Smith"
(integer) 11 # 新字符串长度
127.0.0.1:6379> GET name
"Alice Smith"
# 取部分
127.0.0.1:6379> GETRANGE name 0 4
"Alice"
# 长度
127.0.0.1:6379> STRLEN name
(integer) 11计数器
# 自增/自减(原子操作,单线程执行)
127.0.0.1:6379> SET page:view 1000
127.0.0.1:6379> INCR page:view # +1
(integer) 1001
127.0.0.1:6379> INCRBY page:view 50 # +50
(integer) 1051
127.0.0.1:6379> DECR page:view # -1
(integer) 1050
127.0.0.1:6379> INCRBYFLOAT price 9.99 # 浮点数
"109.99"
# 应用:每日访问量
127.0.0.1:6379> SET visits:2026-05-15 0
127.0.0.1:6379> INCR visits:2026-05-15过期时间
# 设置时直接指定过期(秒 / 毫秒)
SET cache:key "value" EX 60 # 60 秒
SET cache:key "value" PX 60000 # 60000 毫秒
# NX/XX:不存在/存在时才设置
SET cache:key "value" NX EX 60 # 不存在才设 + 过期
SET cache:key "new_value" XX # 存在才更新应用场景
# 缓存简单数据
SET user:100:name "Alice" EX 3600
# 分布式锁
SET lock:order:123 "locked" NX EX 30
# 全局 ID 生成
SET id:order 1000
INCR id:order # 1001
INCR id:order # 1002
# 限流(固定窗口)
SET rate:api:user1 0 EX 60
INCR rate:api:user1 # 1
INCR rate:api:user1 # 2(达到限制后拒绝)小结
| 命令 | 用途 | O |
|---|---|---|
SET/GET | 读写 | 1 |
MSET/MGET | 批量读写 | N |
INCR/DECR | 原子计数 | 1 |
SETNX | 不存在才设 | 1 |
GETSET | 获取旧值设新值 | 1 |
APPEND | 追加 | 1 |
STRLEN | 字符串长度 | 1 |
- String 最大 512MB,所有命令原子执行。
INCR系列用于计数器(点赞数、访问量、ID 生成)。SET key value NX EX seconds是分布式锁的标准实现。- 生产环境用
SET key value EX 60替代EXPIRE。
上一节:通用命令 下一节:List 与消息队列
