Redis 入门实战 + 核心基础详解

2 阅读4分钟

前言

大家好,我是程序员只因。最近跟着黑马学习了Redis,作为后端开发必备的中间件,Redis 是面试高频考点,也是项目开发中缓存、限流、分布式锁的核心工具。

这篇文章是我从零学习 Redis 的实战总结,没有晦涩的底层源码,只讲新手必掌握、求职必问的核心知识点 + Java 实操代码,适合所有后端入门同学参考。

一、Redis 是什么?为什么后端必须学?

1. 核心定义

Redis(Remote Dictionary Server)是一款开源、高性能、基于内存的键值(Key-Value)数据库,常被用作缓存中间件。

2. 为什么 Java 后端离不开 Redis?

  • 性能极高:纯内存操作,QPS 可达十万级,远超 MySQL 磁盘数据库
  • 缓解数据库压力:热点数据缓存,避免频繁查询 MySQL
  • 功能丰富:支持缓存、分布式锁、限流、计数器、消息队列、会话存储
  • 面试必考:校招后端面试,Redis 基础、缓存问题、持久化、过期策略是高频题

二、Redis 核心特性(新手必记)

1. 内存存储 + 持久化

Redis 数据默认存在内存中,速度极快;同时支持 RDB、AOF 持久化机制,重启后数据不丢失,解决了纯内存数据易丢失的问题。

2. 单线程模型

Redis 核心读写采用单线程模型,避免了多线程竞争锁的开销,这也是它高性能的核心原因之一。注意:Redis 6.0 后多线程只处理网络 IO,核心命令执行依旧单线程

3. 支持多种数据结构

不同于普通 KV 缓存,Redis 不仅仅存字符串,新手必须掌握 5 大基础数据结构:

  • String(字符串):最常用,缓存用户信息、配置、计数器
  • List(列表):有序可重复,实现消息队列、排行榜
  • Set(集合):无序不可重复,实现去重、共同好友
  • Hash(哈希):适合存储对象,如用户信息、商品详情
  • ZSet(有序集合):带权重排序,实现热搜、积分排行榜

三、环境搭建(Windows 通用教程)

新手推荐使用绿色版 Redis,无需复杂配置:

  1. 下载 Redis 绿色版,解压即可使用
  2. 打开 redis-server.exe启动服务端(默认端口 6379)
  3. 打开 redis-cli.exe 启动客户端,默认本地连接

启动成功后,输入 ping,返回PONG 即环境搭建完成。

四、Java 整合 Redis 实战(SpringBoot)

后端开发核心:会用代码操作 Redis,下面是可直接运行的 SpringBoot 整合案例。

1. 引入 Maven 依赖

 <!-- SpringBoot Redis 依赖 -->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>

2. 配置 application.yml

 spring:
   redis:
     # 本地地址
     host: localhost
     # 默认端口
     port: 6379
     # 默认无密码
     password:
     # 选择数据库,默认 0 库
     database: 0

3. 基础 CRUD 代码演示

使用 Spring 封装的 RedisTemplate 实现最常用的 String 读写操作:

 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 import javax.annotation.Resource;
 import java.util.concurrent.TimeUnit;
 ​
 @Component
 public class RedisUtil {
 ​
     @Resource
     private RedisTemplate<String, Object> redisTemplate;
 ​
     /**
      * 设置缓存(带过期时间)
      */
     public void set(String key, Object value, long time) {
         if (time > 0) {
             redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
         } else {
             redisTemplate.opsForValue().set(key, value);
         }
     }
 ​
     /**
      * 获取缓存
      */
     public Object get(String key) {
         return key == null ? null : redisTemplate.opsForValue().get(key);
     }
 ​
     /**
      * 删除缓存
      */
     public Boolean del(String key) {
         return redisTemplate.delete(key);
     }
 }

4. 测试接口

 @RestController
 @RequestMapping("/redis")
 public class RedisController {
 ​
     @Resource
     private RedisUtil redisUtil;
 ​
     @GetMapping("/set")
     public String setRedis() {
         // 设置 key:username,value:zhangsan,过期时间 60 秒
         redisUtil.set("username","zhangsan",60);
         return "缓存设置成功";
     }
 ​
     @GetMapping("/get")
     public String getRedis() {
         return (String) redisUtil.get("username");
     }
 }

五、新手学习踩坑记录(真实问题)

学习过程中遇到 2 个高频问题,帮大家避坑:

1. 启动连接失败

原因:Redis 服务未启动 / 端口被占用 解决:先启动 redis-server,确认 6379 端口正常占用

2. 存储中文乱码

原因:RedisTemplate 默认序列化规则问题 解决:后续可以自定义 Jackson2JsonRedisSerializer 序列化规则,统一编码格式

六、学习总结 & 后续规划

通过本次学习,我掌握了:

  • Redis 的定位、核心优势、适用场景
  • 5 大基础数据结构的业务用途
  • SpringBoot 整合 Redis 实现基础缓存读写

后续学习计划

接下来会继续深耕 Redis,依次学习:缓存过期策略、缓存穿透/击穿/雪崩解决方案、持久化机制、分布式锁实战,持续输出系列博客,搭建自己的后端技术知识库。

写在最后

作为在校生,持续输出技术博客是拉开求职差距的核心方式。拒绝只会抄课、只会听课,把每一个知识点落地成文章、代码、实战项目,日积月累就是校招最强作品集。

后续会持续更新 Java 后端、Redis、SpringBoot、MySQL 系列干货,欢迎一起交流学习~