张芷铭的个人博客

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 "消息"  # 发布

最佳实践

  1. 键名设计:简洁有意义,如 user:1000:name
  2. 内存优化:小对象用 Hash,避免多个 String 键
  3. 批量操作:使用管道减少网络往返
  4. 监控:定期检查内存使用、命中率

Comments