enyang
enyang
Published on 2025-11-18 / 7 Visits
0
0

Redis快速上手

1. Redis 基础核心知识

1.1 Redis是什么

Redis 是一个基于内存的 Key-Value NoSQL 数据库,单线程执行,支持多种数据结构。速度快(十几万 QPS),适合作为缓存,多种数据结构适用于不同场景。

1.2 Redis 常用数据类型及场景

类型

场景

String

缓存、计数器、token、session

Hash

存储对象

List

消息队列,按顺序读取

Set

去重、抽奖、好友关系

ZSet

排行榜、延时任务

Bitmap

签到、活跃用户

HyperLogLog

UV 统计(访客量)

Stream

日志流、消息队列(Kafka 轻量版)

1.3 Redis 常用数据类型及场景

  • RDB:定期快照(性能好)

  • AOF:追加日志(安全性高)

  • 混合持久化:推荐

2. Java操作Redis(Spring Data Redis)

2.1 Maven 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2.2 application.yml 配置

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    lettuce:
      pool:
        max-active: 10
        max-idle: 8
        min-idle: 2

2.3 Java 操作模板(通用)

@Service
public class RedisService {

    @Autowired
    private StringRedisTemplate redis;

    public void set(String key, String value, long expireSeconds) {
        redis.opsForValue().set(key, value, Duration.ofSeconds(expireSeconds));
    }

    public String get(String key) {
        return redis.opsForValue().get(key);
    }

    public void hset(String key, String field, String value) {
        redis.opsForHash().put(key, field, value);
    }

    public Map<Object,Object> hgetall(String key) {
        return redis.opsForHash().entries(key);
    }

    public void push(String queue, String value) {
        redis.opsForList().leftPush(queue, value);
    }

    public String pop(String queue) {
        return redis.opsForList().rightPop(queue);
    }

    public Boolean lock(String key, String value, long expireSeconds) {
        return redis.opsForValue().setIfAbsent(key, value, Duration.ofSeconds(expireSeconds));
    }
}


Comment