以下是 Redis 中 字符串(String)类型 的详细内容,包括命令大全、应用场景、操作注意事项、实用技巧及最佳实践,适用于缓存、计数器、限流等多种业务需求。


📚 目录

  1. 字符串简介
  2. 常用命令汇总
  3. 典型使用场景
  4. 字符串高级用法
  5. 注意事项与性能建议
  6. 参考资料

🧵 字符串简介

  • Redis 的字符串是最基本的数据类型
  • 本质上是 二进制安全(Binary Safe) 的字节数组
  • 最大长度为 512MB
  • 可以存储文本、数字、二进制文件(如 JSON、图片 Base64 等)

🔧 常用命令汇总

命令说明
SET key value设置字符串值
GET key获取字符串值
SETEX key seconds value设置键值并指定过期时间(秒)
PSETEX key milliseconds value设置键值并指定过期时间(毫秒)
MSET key1 value1 key2 value2批量设置多个键值
MGET key1 key2批量获取多个键值
INCR key将键值加1(初始值默认为0)
DECR key将键值减1
INCRBY key increment增加指定数值
DECRBY key decrement减去指定数值
APPEND key value追加字符串内容
GETRANGE key start end获取字符串的子串
SETRANGE key offset value替换指定偏移量处的内容
STRLEN key获取字符串长度

🧪 典型使用场景

1. 缓存网页数据或用户信息

SET user:1001:name "Alice"
SETEX user:1001:profile 3600 "{json字符串}"

2. 计数器(访问次数、点赞数等)

INCR page:view:1234
INCRBY user:likes:1001 5

3. 限流(IP、用户操作频率)

INCR req:ip:192.168.1.1
EXPIRE req:ip:192.168.1.1 60  # 1分钟限流

4. 分布式锁

SET lock:resource_1 "uuid-123" NX EX 30


🧰 字符串高级用法

✔ 原子性操作

  • Redis 的 SETINCR 等命令均为原子操作,可安全用于并发环境。

✔ 条件设置

命令说明
SET key value NX仅当 key 不存在时设置(常用于分布式锁)
SET key value XX仅当 key 存在时设置
SET key value NX EX seconds原子地设置值 + 过期时间 + 不存在时写入

✔ 偏移量操作

可用于位图(Bitmap)应用,如签到、活跃状态等:

SETBIT active:20240413 1001 1
GETBIT active:20240413 1001


⚠️ 注意事项与性能建议

项目建议
⛔ 大值存储避免存储接近 512MB 的大字符串,防止阻塞主线程
✅ 尽量短小字符串设计尽量小而频繁,适合 Redis 低延迟特性
⏳ 使用 TTL作为缓存使用时务必设定过期时间,防止内存膨胀
🔐 JSON 或序列化格式存储结构化数据时,建议统一使用 JSON 或 MsgPack 格式

📎 参考资料


如果你需要我为你写一个完整的基于字符串的缓存模板、限流脚本或访问统计系统,也可以告诉我,我可以生成 Lua 脚本或 Python 使用示例。