以下是 Redis 中 字符串(String)类型 的详细内容,包括命令大全、应用场景、操作注意事项、实用技巧及最佳实践,适用于缓存、计数器、限流等多种业务需求。
📚 目录
🧵 字符串简介
- 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 的
SET
、INCR
等命令均为原子操作,可安全用于并发环境。
✔ 条件设置
命令 | 说明 |
---|---|
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 使用示例。
发表回复