一、Redis 概述1、定义Redis 是内存型键值缓存中间件,数据优先放在内存读写,速度远远快于 MySQL 磁盘数据库;同时支持持久化落地硬盘。存储格式:key:value。设置过期时间(适合验证码、登录 token)读写极快,减轻 MySQL 查询压力支持字符串、Hash、列表等多种数据结构2、和 MySQL 的区别MySQL:磁盘数据库,永久存放业务数据(用户表、菜单、sys_config配置),查询慢,核心数据不能丢。Redis:内存缓存,高速存取临时数据,用来提速;不能替代 MySQL。3、典型业务流程(缓存套路)前端请求接口 → 后端先查 Redis有数据 → 直接返回,不用查数据库无数据 → 查询 MySQL,查到后写入 Redis,再返回结果二、安装 Redis 服务1、下载并解压发布地址:https://github.com/tporadowski/redis/releases找到文件:Redis-x64-5.0.14.zip解压到自定义路径(E:\Program Files\Redis5.0.14),路径不能有中文、空格。2、启动服务打开电脑命令行终端 CMD,进入解压目录,输入指令安装并启动 Redis 服务。服务启动后,执行 redis-cli ping 返回 PONG 说明服务正常。# 安装服务redis-server.exe--service-install redis.windows.conf# 启动服务redis-server--service-start# 停止服务redis-server--service-stop# 卸载服务redis-server--service-uninstall# 验证Redis是否启动成功redis-cliping3、修改 Redis 密码(可选)打开 redis.windows.conf 文件,找到# requirepass foobared修改密码为123456:requirepass 123456设置密码后,application.yml 中必须填写 password: 123456,否则会连接失败。三、SpringBoot 连接 Redis1、Maven 依赖!-- Redis Starter --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!-- 连接池依赖 lettuce需要 commons-pool2 --dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId/dependency2、application.yml 配置spring:redis:# Redis地址,也可为 localhosthost:127.0.0.1# 端口默认6379port:6379# 有密码填写,无密码留空不要写nullpassword:# Redis数据库编号 0~15,默认使用0库database:0# 连接超时时间timeout:10s# Lettuce连接池配置lettuce:pool:# 最大数据库连接数max-active:8# 最大空闲连接max-idle:8# 最小空闲连接min-idle:2# 最大阻塞连接等待时间(使用负值表示没有限制)max-wait:5000ms3、两种操作模版(1)StringRedisTemplate【推荐】key 和 value 都是字符串,存入 Redis 可读,无乱码。@ComponentpublicclassRedisCacheDemo{@ResourceprivateStringRedisTemplatestringRedisTemplate;// 设置缓存,附带过期时间publicvoidsetCache(Stringkey,Stringvalue){stringRedisTemplate.opsForValue().set(key,value,30,TimeUnit.MINUTES);}// 获取缓存publicStringgetCache(Stringkey){returnstringRedisTemplate.opsForValue().get(key);}// 删除缓存publicvoiddeleteCache(Stringkey){stringRedisTemplate.delete(key);}}(2)RedisTemplateObject,Object默认 jdk 序列化,Redis 客户端查看一堆十六进制乱码,一般需要自定义序列化配置。以下为若依系统中的相关代码。packagecom.ruoyi.common.core.redis;importjava.util.Collection;importjava.util.Iterator;importjava.util.List;