「从零到实战」10分钟玩转 Redis —— 附 Java 实战与运行结果
目录
4. Java 操作 Redis(Spring Data Redis 示例)
4.2 Spring Boot 集成 Spring Data Redis
4.2.2 配置 Redis(application.yml)
1.引言
在高并发系统中,性能瓶颈往往来自数据库。Redis 作为一款高性能、开源的内存数据库,不仅能实现 缓存加速,还能支持多种数据结构,满足排行榜、分布式锁、消息队列等多场景需求。本文将带你快速入门 Redis,并用 Java 写一个可运行的 Demo(含运行结果)。
2. Redis 基础
2.1 什么是 Redis
Redis(Remote Dictionary Server)是一种开源的、基于内存的、支持多种数据结构的高性能 NoSQL 数据库。
2.2 核心特性
-
基于内存,速度快(单机 QPS 可达 10W+)
-
支持多种数据类型(String、List、Set、Hash、ZSet 等)
-
支持持久化(RDB、AOF)
-
天然支持分布式与主从复制
-
广泛用于缓存、消息队列、排行榜等
3. 常用数据类型与命令
| 类型 | 说明 | 常用命令 |
|---|---|---|
| String | 最基本的键值对 | SET key value / GET key |
| List | 有序列表 | LPUSH key value / LRANGE key start stop |
| Set | 无序集合,元素唯一 | SADD key value / SMEMBERS key |
| Hash | 键值对集合(类似 Map) | HSET key field value / HGET key field |
| ZSet | 有序集合 | ZADD key score member / ZRANGE key start stop WITHSCORES |
3.1 String(字符串)
SET name "yang"
GET name
应用场景:缓存对象、分布式锁计数器等。
3.2 Hash(哈希)
HSET user:1 name "Yang" age 21
HGETALL user:1
应用场景:存储对象信息(如用户数据)。
3.3 List(列表)
LPUSH tasks "task1"
RPUSH tasks "task2"
LPOP tasks
应用场景:消息队列、任务列表。
3.4 Set(集合)
SADD tags "java" "redis"
SMEMBERS tags
应用场景:标签系统、去重。
3.5 Sorted Set(有序集合)
ZADD ranking 100 "Alice"
ZADD ranking 200 "Bob"
ZRANGE ranking 0 -1 WITHSCORES
应用场景:排行榜、优先队列。
4. Java 操作 Redis(Spring Data Redis 示例)
4.1 为什么要用 Spring Data Redis
在 Java 开发中,直接用 Jedis 操作 Redis 虽然简单,但需要手动管理连接池、序列化等。
Spring Data Redis 提供了一个更优雅的方式:
-
与 Spring Boot 无缝集成
-
自动连接池管理
-
提供
RedisTemplate、StringRedisTemplate高级 API -
支持序列化和反序列化
-
事务、发布订阅等一站式支持
4.2 Spring Boot 集成 Spring Data Redis
4.2.1 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
4.2.2 配置 Redis(application.yml)
spring:
redis:
host: localhost
port: 6379##默认就是6379##
password: ##输入你自己的密码即可##
database: ##选择你想选的数据库编号即可(从零开始,一共有16个数据库)##
4.2.3 示例代码:缓存用户信息
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.*;
import java.util.concurrent.TimeUnit;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private StringRedisTemplate redisTemplate;
@GetMapping("/cache")
public String cacheUser(@RequestParam String id) {
String key = "user:" + id;
String value = "User Info for ID " + id;
// 存入缓存,设置 60 秒过期
redisTemplate.opsForValue().set(key, value, 60, TimeUnit.SECONDS);
return "缓存成功:" + value;
}
@GetMapping("/get")
public String getUser(@RequestParam String id) {
String key = "user:" + id;
String value = redisTemplate.opsForValue().get(key);
return value != null ? "获取到用户信息:" + value : "缓存未命中";
}
}
4.2.4 运行结果
GET /user/cache?id=101
=> 缓存成功:User Info for ID 101
GET /user/get?id=101
=> 获取到用户信息:User Info for ID 101
5. 总结
Redis 作为缓存中间件,在高并发系统中几乎是必选方案;而 Spring Data Redis 则让我们在 Java 项目中更优雅、更安全地使用 Redis。
掌握了本文的知识点和示例代码,相信你已经能在实际项目中灵活应用 Redis 了 🚀
💬 如果你有 Redis 实战经验,欢迎在评论区分享!
更多推荐
所有评论(0)