一、Redis是干啥的?
Redis就是个存数据的地方,但它是放在内存里的。
你之前用的MySQL,数据是放在硬盘里的。读数据的时候,硬盘得转一下,稍微慢点。
Redis不一样,它把数据放内存里。你用过电脑就知道,内存比硬盘快太多了。
所以Redis通常拿来干两件事:
1、缓存:把常用的数据放Redis里,不用每次去数据库查,速度飞快
2、临时数据:比如登录验证码、投票排名、秒杀库存这种,不需要长期存的
打个比方:MySQL像个大仓库,啥都往里放,但找东西得翻一会儿。Redis像个桌面上的小篮子,常用的东西搁这儿,一伸手就拿到了。
二、Redis下载和安装(Windows版)
先跟你说个事儿。官方其实没出Windows版,只有Linux版。但咱们平时开发用的是Windows,所以有人搞了个Windows能用的版本。
我推荐用这个: Memurai 或者微软维护的那个老版本。
不过最简单的办法是:直接去GitHub搜“Redis Windows”,找那个microsoftarchive/redis或者tporadowski/redis,下载zip包解压就能用。
下载地址:https://github.com/redis-windows/redis-windows/releases

操作步骤:
第1步:下载
搜tporadowski redis releases,找到最新的那个Redis-x64-xxx.zip,下载。
第2步:解压
解压到一个没有中文的路径,比如D:\Redis
第3步:启动Redis
进去那个文件夹,找到redis-server.exe,双击。

会弹出一个黑色的框,里面一堆日志。看到有个提示说Ready to accept connections,就说明Redis启动成功了。

注意: 这个黑框不能关,关了Redis就停了。你平时开发的时候就让它在那儿挂着就行。
第4步:测试一下
黑框开着的情况下,去文件夹里找到redis-cli.exe,双击打开。

在里面输入:
ping
它应该回你:
PONG

如果能回PONG,说明Redis活得好好的。
三、顺便说一下Linux上的安装(如果你是服务器部署)
如果你以后要把项目部署到服务器上,服务器一般都是Linux系统。Linux上装Redis就一行命令的事儿:
# Ubuntu/Debian 系统
sudo apt update
sudo apt install redis-server
# CentOS/RHEL 系统
sudo yum install redis
装完启动:
sudo systemctl start redis
sudo systemctl enable redis # 开机自启
然后也一样可以用redis-cli连上去。
不过这些你现在不用太管,等你需要部署的时候再来看就行。
四、Java里怎么用Redis?
Redis跑起来了,下一步是在你的Spring Boot项目里连上它。
Spring Boot操作Redis,一般用Spring Data Redis,它封装好了各种操作,你直接调就行。
第1步:加依赖
在你的pom.xml里加上:
<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>

加完刷新一下Maven,让jar包下下来。
第2步:写配置文件
在application.properties里加上:
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.database=0
spring.redis.timeout=3000ms
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
注意: 上面的配置都是默认值,你暂时不用改。localhost和6379就是Redis的默认地址和端口。
第3步:写个测试代码
在你的测试类里写一段代码,试试能不能存进去、读出来。
@SpringBootTest
class RedisTest {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Test
void testRedis() {
// 存数据
redisTemplate.opsForValue().set("name", "已经码好了");
// 取数据
String name = (String) redisTemplate.opsForValue().get("name");
System.out.println("从Redis读出来的数据:" + name);
}
}

跑一下这个测试。如果控制台打印出来从Redis读出来的数据:已经码好了,那就恭喜你,连上了!
五、一个更实用的例子
上面那个例子只是测试用,真正做项目的时候,你可能会把Redis用在Service里。
比如你做一个查询用户信息的接口:
@Service
public class UserService {
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private UserMapper userMapper;
public User getUserById(Long id) {
// 先从Redis里查
String key = "user:" + id;
User user = (User) redisTemplate.opsForValue().get(key);
// 如果Redis里有,直接返回
if (user != null) {
System.out.println("从缓存中读取");
return user;
}
// Redis里没有,去数据库查
user = userMapper.selectById(id);
// 查到之后,放进Redis,下次就不用查数据库了
if (user != null) {
redisTemplate.opsForValue().set(key, user);
System.out.println("从数据库读取,并放入缓存");
}
return user;
}
}
这个就是缓存穿透的一个简单写法。先查Redis,查不到再查数据库,然后把结果放回Redis。
你的毕设里如果有一段这样的代码,答辩的时候老师问你“你有没有做什么优化”,你就可以把这个拿出来说,绝对加分。
💡 小提示:真正写代码的时候,注解
@Cacheable可以自动干这个事,不用自己写if-else。不过手动写的更直观,适合给老师讲原理。看你喜欢哪个。
六、常用Redis命令(知道几个就够了)
用Java操作Redis的时候,底层其实调的就是这些命令。了解一下也不亏:
|
命令 |
干啥的 |
Java里的写法 |
|---|---|---|
SET key value |
存字符串 | opsForValue().set("name","abc") |
GET key |
取字符串 | opsForValue().get("name") |
HSET key field value |
存哈希(像个对象) | opsForHash().put("user:1","name","abc") |
HGET key field |
取哈希 | opsForHash().get("user:1","name") |
EXPIRE key seconds |
设置过期时间 | expire("key", 10, TimeUnit.SECONDS) |
DEL key |
删除 | delete("key") |
平时用得最多的就是SET和GET,其他的用到再查就行。
七、常见翻车现场
“双击redis-server.exe闪退”
大概率是端口被占了。6379端口已经被别的程序用了。关掉其他占用的程序,或者换个端口启动。
换端口的话,得改配置文件redis.windows.conf里的port 6379改成别的,比如port 6380。
“Java连不上,报连接超时”
先检查一下Redis有没有启动。看看那个黑框还在不在,里面有没有报错。
再看看代码里的host和port是不是写对了。如果Redis和项目都在自己电脑上,host就是localhost。
“报错:Unable to connect to Redis”
大概率是没连上。用redis-cli试试能不能连。如果命令行都连不上,那就是Redis没启动好。
“存进去的数据取出来是乱码”
RedisTemplate默认的序列化方式存出来是这样的。如果你看着不舒服,可以自己配置一下RedisTemplate,用StringRedisSerializer当key的序列化。代码有点长,你需要的话可以回复【Redis配置】,我发你。
不过说真的,乱码归乱码,不影响你用,先能跑通比啥都重要。
“Linux上装好了,但Java连不上”
检查一下防火墙。Linux上Redis默认只允许本机连,你要从别的机器连,得改配置文件里的bind 127.0.0.1改成bind 0.0.0.0。不过注意,这样有安全风险,建议只是开发测试的时候这么搞。
八、顺便说一下
Redis装好、连好之后,你能干的事儿还挺多的:
1、存登录验证码(设置个5分钟过期)
2、存热门文章列表(用List或者ZSet存)
3、接口防刷(用户1分钟内只能请求10次)
4、分布式锁(复杂点的场景)
不过这些都是进阶操作了,先把基础的跑通再说。
你在毕设里哪怕只用到了SET和GET做缓存,那也是一个加分项。因为很多同学的毕设就是纯增删改查,加了Redis你就比他们多了个“优化”的亮点。
安装包去哪儿拿?
关注「已经码好了」,回复【Redis】,我把压缩包发你。
5万+

被折叠的 条评论
为什么被折叠?



