1.String 字符串
-
Redis 最基础类型,可以存字符串、数字、二进制。
-
命令 表格
命令 功能 SET key value设置 GET key获取 SETNX key value不存在才设置(分布式锁) SETEX key seconds value设置 + 过期时间 INCR / INCRBY数字自增 MSET / MGET批量设置、批量获取 -
编码:int、embstr、raw;数字用 int,短字符串 embstr,长字符串 raw。
-
场景:缓存、计数器、验证码、分布式锁。
2.List 列表(双向链表)
-
有序,允许重复元素,两头操作极快,中间索引遍历慢。
-
命令 表格
命令 功能 LPUSH key val左边插入 RPUSH key val右边插入 LPOP / RPOP左右弹出 LRANGE key start end范围查询 LLEN key获取长度 BLPOP / BRPOP阻塞弹出(消息队列) -
底层:quicklist(压缩列表 ziplist + 双向链表)
-
场景:消息队列、时间线。
3.Hash 哈希
-
key‑field‑value 结构,适合对象存储。
-
命令 表格
命令 功能 HSET key field val设置字段 HGET key field获取单个字段 HGETALL key获取全部字段 HDEL key field删除字段 HINCRBY字段数字自增 -
编码:ziplist(元素少、值短),hashtable(哈希表)。
-
场景:存储用户对象。
4.Set 集合
-
无序,元素不重复。
-
命令 表格
命令 功能 SADD key member添加 SREM key member删除 SMEMBERS key取出全部 SCARD key元素数量 SISMEMBER判断是否存在 SINTER / SUNION / SDIFF交集、并集、差集 -
底层:intset(全数字)、hashtable。
-
场景:好友、标签、去重。
5.SortedSet 有序集合 ZSet
- member 唯一不重复,带 score 分数,按 score 排序;底层:跳表 SkipList + hash 表
- 特性:可排序、元素不重复、查询速度快。
注意:member 不能重复,score 允许重复;score 相同按 member 字典序排序。
-
常用命令 表格
命令 功能 ZADD key score member添加,存在就更新 score ZREM key member删除成员 ZSCORE key member获取分数 ZRANK key member升序排名(下标从 0) ZREVRANK降序排名 ZCARD元素总数 ZCOUNT min max统计区间 score 数量 ZINCRBYscore 自增 ZRANGE min max [WITHSCORES]按排名升序取 ZREVRANGE按排名降序取 ZRANGEBYSCORE按 score 范围查询 ZDIFF ZINTER ZUNION差集、交集、并集
降序规则:原命令 Z 后加 REV;
WITHSCORES返回同时带出分数。
- 编码:ziplist(数量少、内容短),超过阈值切换跳表 + hash。
- 场景:排行榜。
##6. 五种数据类型对比
表格
| 类型 | 是否可重复 | 是否有序 | 底层 | 典型场景 |
|---|---|---|---|---|
| String | value 可重复 | 无序 | sds 简单动态字符串 | 缓存、计数器 |
| List | ✅允许重复 | 插入有序 | quicklist | 消息队列 |
| Hash | field 不重复 | 无序 | ziplist/hashtable | 对象存储 |
| Set | ❌不重复 | 无序 | intset/hashtable | 好友、去重 |
| ZSet | member 不重复 | score 排序 | skiplist+hash | 排行榜 |