01. String——不止是字符串
String 是 Redis 最基础的类型,但别看名字叫「字符串」,它其实万能。能存文本、JSON、数字,甚至二进制。
最大亮点是原子自增——多个客户端同时 INCR 同一个 key,绝不会出现竞态条件。计数器、分布式 ID 生成全靠它。
bash
# String 花式用法
SET page:home "首页内容"
GET page:home
# 原子数字操作
SET views 0
INCR views # → 1
INCRBY views 100 # → 101
DECR views # → 100
# 带过期
SETEX token 3600 "abc123" # 3600 秒后自动删
# 条件设置(不存在才设,分布式锁基础)
SETNX lock:resource "1"SETNX + EXPIRE 是 Redis 分布式锁的经典套路,生产环境建议用 Redlock 算法或 Redisson 等成熟库。
02. Hash——存对象利器
Hash 是「键值对里的键值对」,特别适合存对象。跟用 String 存 JSON 相比,Hash 可以单独读写某个字段,不用每次序列化反序列化整个对象。
bash
HSET user:100 name "小明" age 25 city "北京"
HGET user:100 name # → "小明"
HMGET user:100 name age # 一次拿多个
HGETALL user:100 # 全拿出来
HSET user:100 age 26 # 只改一个
HDEL user:100 city # 删一个
HINCRBY user:100 age 1 # age 自增 → 27
HEXISTS user:100 email # → 003. List——天然消息队列
List 是有序列表,两头都能操作,天然队列结构。LPUSH + RPOP = 先进先出队列,LPUSH + LPOP = 后进先出栈。
bash
LPUSH news "消息1" "消息2"
RPUSH news "消息3"
LRANGE news 0 -1 # 全看
LPOP news # 左弹
RPOP news # 右弹
LLEN news # 长度
# 裁剪只留前 N 条
LTRIM news 0 99
# 阻塞弹出——消息队列神器
BLPOP queue 5 # 等 5 秒,有数据弹出BLPOP/BRPOP 是 Redis 做消息队列的核心,配合多消费者实现简单任务分发。
04. Set——去重和集合运算
Set 无序不重复,最大用处是去重以及交集、并集、差集运算。适合标签系统、共同关注。
bash
SADD user:1:tags "python" "redis" "mysql"
SADD user:2:tags "python" "mongodb" "docker"
SINTER user:1:tags user:2:tags # 交集 → 共同标签 "python"
SUNION user:1:tags user:2:tags # 并集
SDIFF user:1:tags user:2:tags # 差集
SRANDMEMBER user:1:tags # 随机抽一个
SPOP user:1:tags # 弹出一个05. Sorted Set——排行榜第一名
Sorted Set 是 Set 的升级版——每个元素带「分数」按分自动排序。排行榜功能的最佳人选。
按分数范围查、按排名查,非常灵活。
bash
ZADD score 100 "张三" 85 "李四" 92 "王五"
ZRANGE score 0 -1 WITHSCORES # 升序
ZREVRANGE score 0 -1 WITHSCORES # 降序(排行榜)
ZREVRANK score "张三" # → 0(第一名)
ZSCORE score "张三" # → "100"
ZRANGEBYSCORE score 90 100 WITHSCORES知识测验
第 1/5 题正确 0
Redis 中哪种数据类型最适合排行榜?
下一节
下一节 常用命令大全