Redis 入门指南:5 种数据结构与常见使用场景
Redis 是最流行的内存数据库。本文介绍 Redis 的核心数据结构和使用场景。
5 种数据结构
String(字符串)
SET name "张三"
GET name
INCR counter
EXPIRE name 3600
场景: 缓存、计数器、分布式锁
List(列表)
LPUSH queue "task1"
RPUSH queue "task2"
LPOP queue
LRANGE queue 0 -1
场景: 消息队列、最新列表
Hash(哈希)
HSET user:1 name "张三"
HSET user:1 age 28
HGET user:1 name
HGETALL user:1
场景: 对象存储、用户信息
Set(集合)
SADD tags "java" "python" "go"
SMEMBERS tags
SISMEMBER tags "java"
SINTER tags1 tags2
场景: 标签、共同好友、去重
Sorted Set(有序集合)
ZADD ranking 100 "张三"
ZADD ranking 90 "李四"
ZREVRANGE ranking 0 9 WITHSCORES
场景: 排行榜、延迟队列
常见使用场景
1. 缓存
// 查询缓存
String cached = redisTemplate.opsForValue().get(key);
if (cached != null) {
return JSON.parseObject(cached, User.class);
}
// 查询数据库
User user = userMapper.selectById(id);
// 写入缓存
redisTemplate.opsForValue().set(key, JSON.toJSONString(user), 1, TimeUnit.HOURS);
2. 分布式锁
Boolean locked = redisTemplate.opsForValue()
.setIfAbsent("lock:order:" + orderId, "1", 10, TimeUnit.SECONDS);
if (locked) {
try {
// 处理业务
} finally {
redisTemplate.delete("lock:order:" + orderId);
}
}
3. 排行榜
// 更新分数
redisTemplate.opsForZSet().incrementScore("ranking", "张三", 10);
// 获取 Top 10
Set<String> top10 = redisTemplate.opsForZSet()
.reverseRange("ranking", 0, 9);
总结
Redis 是高性能的内存数据库。掌握 5 种数据结构和常见场景,可以解决大部分缓存和数据存储需求。