Redis 数据结构概览
Redis 是一个基于内存的键值数据库,值支持多种数据结构。常用的五种基础类型:String、Hash、List、Set、ZSet。
String(字符串)
最基础的类型,可以存字符串、数字,常用于缓存对象 JSON、计数器。
SET name "tom"
GET name
SET counter 1
INCR counter # 自增,原子操作
INCRBY counter 10 # 增加指定数值
SET key "val" EX 60 # 设置 60 秒过期
TTL key # 查看剩余过期时间
使用场景:缓存、计数器、分布式锁(配合 SET NX EX)。
Hash(哈希)
适合存对象的多个字段,可以单独修改某个字段。
HSET user:1 name tom
HSET user:1 age 18
HGET user:1 name
HGETALL user:1
HDEL user:1 age
使用场景:购物车、用户信息缓存。
List(列表)
双向链表结构,支持从两端插入和弹出。
LPUSH list a b c
RPUSH list d
LRANGE list 0 -1 # 查看全部
LPOP list
RPOP list
LLEN list # 长度
使用场景:消息队列、最新消息列表、时间线。
Set(集合)
无序、元素不重复,支持交并差集运算。
SADD tags a b c
SMEMBERS tags
SISMEMBER tags a # 判断成员是否存在
SINTER set1 set2 # 交集
SUNION set1 set2 # 并集
SDIFF set1 set2 # 差集
使用场景:标签、抽奖去重、共同好友。
ZSet(有序集合)
每个元素带一个分数 score,按分数排序,可去重。
ZADD rank 100 tom
ZADD rank 90 jerry
ZRANGE rank 0 -1 WITHSCORES # 按分数升序
ZREVRANGE rank 0 2 WITHSCORES # 前三名
ZSCORE rank tom
ZRANK rank tom # 排名
使用场景:排行榜、延迟队列(用时间戳作 score)。
小结
| 类型 | 特点 | 典型场景 |
|---|---|---|
| String | 简单键值 | 缓存、计数器 |
| Hash | 字段级操作 | 对象缓存、购物车 |
| List | 双端进出 | 消息队列 |
| Set | 去重无序 | 标签、共同好友 |
| ZSet | 分数排序 | 排行榜 |
建议先在本地用 redis-cli 把上面的命令都敲一遍,理解每种结构的特点后再结合业务场景选用。