Redis 是高性能键值存储系统,支持多种数据结构,广泛应用于缓存、队列、排行榜等场景。
核心数据结构
| 数据结构 | 特性 | 应用场景 | 关键命令 |
|---|
| String | 文本/数字/二进制,最大512MB | 缓存、计数器、分布式锁 | SET, GET, INCR |
| Hash | 键值对集合,适合存储对象 | 用户信息、商品详情 | HSET, HGET, HGETALL |
| List | 有序列表,支持两端操作 | 消息队列、最新列表 | LPUSH, RPOP, LRANGE |
| Set | 无序唯一集合 | 标签系统、共同好友 | SADD, SINTER, SUNION |
| Sorted Set | 带分数排序的集合 | 排行榜、优先级队列 | ZADD, ZRANGE, ZREVRANGE |
String 字符串
1
2
3
4
5
| SET user:1000 "张三"
GET user:1000
INCR counter # 自增
SETEX session 3600 "data" # 带过期时间
SETNX lock:resource 1 # 仅不存在时设置
|
Hash 哈希
1
2
3
4
| HSET user:1000 name "李四" age 28
HGET user:1000 name
HGETALL user:1000
HINCRBY user:1000 age 1 # 字段自增
|
List 列表
1
2
3
4
| LPUSH messages "msg1" # 左侧插入
RPUSH messages "msg2" # 右侧插入
LPOP messages # 左侧弹出
LRANGE messages 0 -1 # 获取所有元素
|
Set 集合
1
2
3
4
| SADD tags "Redis" "Database"
SMEMBERS tags # 获取所有元素
SINTER set1 set2 # 交集
SUNION set1 set2 # 并集
|
Sorted Set 有序集合
1
2
3
| ZADD leaderboard 95 "玩家A" 87 "玩家B"
ZREVRANGE leaderboard 0 9 WITHSCORES # 前十名
ZRANK leaderboard "玩家A" # 排名
|
键管理
1
2
3
4
5
| KEYS user:* # 查找键(生产慎用)
DEL key # 删除键
EXISTS key # 检查存在
EXPIRE key 60 # 设置过期时间
TTL key # 查看剩余时间
|
高级功能
事务:
1
2
3
4
| MULTI
SET key1 "value1"
SET key2 "value2"
EXEC
|
发布订阅:
1
2
| SUBSCRIBE news.sports # 订阅
PUBLISH news.sports "消息" # 发布
|
最佳实践
- 键名设计:简洁有意义,如
user:1000:name - 内存优化:小对象用 Hash,避免多个 String 键
- 批量操作:使用管道减少网络往返
- 监控:定期检查内存使用、命中率
Comments