Redis 常用数据类型
Redis 常用数据类型
Redis 不只是缓存,它有 5 种常用数据类型,用对了能解决很多问题。
1. String(字符串)
最基本的类型,一个 key 对应一个 value。
# 设置
SET name "张三"
# 读取
GET name
# 自增(计数器)
INCR page_view
# 设置过期时间(秒)
EXPIRE token 3600
# 查看过期时间
TTL token
适用场景: 缓存、计数器、分布式锁。
2. Hash(哈希)
适合存对象。
# 设置字段
HSET user:1 name "张三" age 25
# 获取字段
HGET user:1 name
# 获取所有字段
HGETALL user:1
# 删除字段
HDEL user:1 age
适用场景: 用户信息、商品信息。
3. List(列表)
有序队列,先进先出。
# 从左边插入
LPUSH messages "消息1"
LPUSH messages "消息2"
# 从右边插入
RPUSH messages "消息3"
# 从左边弹出
LPOP messages
# 查看列表
LRANGE messages 0 -1
适用场景: 消息队列、最新消息列表。
4. Set(集合)
无序不重复。
# 添加元素
SADD tags "PHP" "MySQL" "Linux"
# 查看所有元素
SMEMBERS tags
# 判断是否存在
SISMEMBER tags "PHP"
# 交集
SINTER set1 set2
适用场景: 标签、共同好友、去重。
5. ZSet(有序集合)
每个元素带分数,按分数排序。
# 添加元素
ZADD rank 100 "张三"
ZADD rank 90 "李四"
ZADD rank 80 "王五"
# 查看排行(从高到低)
ZREVRANGE rank 0 -1 WITHSCORES
# 获取排名
ZREVRANK rank "张三"
适用场景: 排行榜、热度排序。
总结
| 类型 | 特点 | 适用场景 |
|---|---|---|
| String | 简单键值 | 缓存、计数器 |
| Hash | 存对象 | 用户信息 |
| List | 有序队列 | 消息队列 |
| Set | 不重复 | 标签、去重 |
| ZSet | 带分数排序 | 排行榜 |
Redis 用熟了,能解决很多业务问题。
Redis 数据结构详解
Redis 五种数据结构详解
Redis 不只是缓存,它的五种数据结构各有各的用处,搞懂了才能用对地方。
1. String(字符串)
最基础的数据结构,存字符串、数字都行。
SET name "张三"
GET name
INCR count
SET token "abc123" EX 3600
应用场景:缓存用户信息、计数器、分布式锁、会话存储。
2. Hash(哈希)
存键值对,适合存对象。
HSET user:1 name "张三" age 25 city "北京"
HGET user:1 name
HGETALL user:1
应用场景:存用户信息、商品信息,比 String 存 JSON 更省空间。
3. List(列表)
有序列表,可以从头或尾加元素。
LPUSH messages "hello"
LPUSH messages "world"
LRANGE messages 0 -1
应用场景:消息队列、最新消息列表、朋友圈时间线。
4. Set(集合)
无序不重复集合。
SADD tags "PHP"
SADD tags "MySQL"
SMEMBERS tags
SISMEMBER tags "PHP"
应用场景:标签、共同好友、去重。
5. ZSet(有序集合)
每个元素带分数,按分数排序。
ZADD rank 100 "张三"
ZADD rank 90 "李四"
ZREVRANGE rank 0 9 WITHSCORES
应用场景:排行榜、计分板、优先级队列。
总结
五种数据结构各有用处:
- String:简单缓存、计数器
- Hash:存对象
- List:队列、时间线
- Set:去重、标签
- ZSet:排行榜
选对数据结构,性能才能发挥出来。