Redis 入门指南:5 种数据结构与常见使用场景

全面介绍 Redis 的核心数据结构和使用场景,包括 String、List、Hash、Set、Sorted Set。

数据库 2026-06-20 12 分钟

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 种数据结构和常见场景,可以解决大部分缓存和数据存储需求。

📚 相关文章