大家好,今天咱们来聊一个既能实战学技术,又不要花钱的好事------用 Amazon ElastiCache 免费套餐练手 Redis。
我知道,很多人想玩 Redis,但一听到"买服务器"就头大。本地 Redis 倒是也能装,但那不叫线上实战。而 Amazon 直接送你一台小 Redis,线上可访问,还能有一年免费时长,不用白不用。
亚马逊云科技新用户可以免费使用亚马逊云科技免费套餐(Amazon Free Tier)。注册即可获得 100 美元的服务抵扣金,在探索关键亚马逊云科技服务时可以再额外获得最多 100 美元的服务抵扣金。使用免费计划试用亚马逊云科技服务,最长可达 6 个月。
1. 先说说 ElastiCache 是啥
ElastiCache 是 Amazon 提供的托管版内存缓存服务 ,支持 Redis 和 Memcached。官方帮你搞定部署、运维、备份,你只管用就行了。
新用户可以免费使用 12 个月,每月送 750 小时的 cache.t3.micro
(或者部分地区 cache.t2.micro
),单节点。
虽然规格很小(512MB 内存左右),但用来练手 + 做小项目足够了。
2. 注册账号
如果你没 Amazon 账号,先去 Amazon 官网 注册一个:
- 手机号、账单信息可以直接用国内资料填写;
- 选择基础支持计划(无需额外开支);
- 注册完成后等待身份验证通过,即可开始使用免费套餐。
注意,12个月的免费时长,是从注册完这一刻开始计算的。
3. 三分钟搭好 Redis(精简版教程)
- 登录 Amazon 控制台 → 搜
ElastiCache
→ Create。 - 选 Redis,Engine version 随便选稳定版本。
- 节点类型选
cache.t3.micro
(免费套餐)。 - Network & Security → 选你的 VPC → 配安全组(开放 6379 给你自己的 IP,一定要限制IP,不然就等着被爆破吧)。
- 点击创建,等状态变成 Available。
- 记下 Primary Endpoint,后面代码要用。
小提示:如果你没有 EC2 或 VPC 经验,建议顺手开一台同区域的 EC2,也是有12个月的免费时长,这样你可以顺便也练习使用云服务器。而且你用私网连 Redis,延迟更低,还不用开公网端口
4. 先试试能不能连
本地装个 redis-cli,测一下:
bash
redis-cli -h <your-endpoint> -p 6379
能连上后,随便试两条命令:
bash
SET hello world
GET hello
如果返回了 world
,说明你的 Redis 已经在线运行了。
5. 练手项目:游戏积分排行榜
既然有了 Redis,那就搞个小功能来练手------排行榜。
我们用 Redis 的 有序集合(Sorted Set) 存储玩家分数:
ZADD
增加玩家分数ZINCRBY
增加某个玩家的分数ZREVRANGE
获取排行榜
Spring Boot + Jedis 实战
pom.xml
加依赖:
xml
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>5.1.0</version>
</dependency>
新建一个 LeaderboardService
:
java
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple;
import java.util.Set;
@Service
public class LeaderboardService {
private final String host = "<your-endpoint>";
private final int port = 6379;
public void addScore(String player, double score) {
try (Jedis jedis = new Jedis(host, port)) {
jedis.zincrby("leaderboard", score, player);
}
}
public Set<Tuple> getTopPlayers(int topN) {
try (Jedis jedis = new Jedis(host, port)) {
return jedis.zrevrangeWithScores("leaderboard", 0, topN - 1);
}
}
}
Controller 测试接口:
java
import org.springframework.web.bind.annotation.*;
import redis.clients.jedis.Tuple;
import java.util.Set;
@RestController
@RequestMapping("/rank")
public class LeaderboardController {
private final LeaderboardService leaderboardService;
public LeaderboardController(LeaderboardService leaderboardService) {
this.leaderboardService = leaderboardService;
}
@PostMapping("/score")
public String addScore(@RequestParam String player, @RequestParam double score) {
leaderboardService.addScore(player, score);
return "OK";
}
@GetMapping("/top")
public Set<Tuple> topPlayers(@RequestParam(defaultValue = "3") int n) {
return leaderboardService.getTopPlayers(n);
}
}
运行 Spring Boot 后:
bash
# 增加分数
curl -X POST "http://localhost:8080/rank/score?player=Alice&score=50"
curl -X POST "http://localhost:8080/rank/score?player=Bob&score=100"
curl -X POST "http://localhost:8080/rank/score?player=Charlie&score=70"
# 获取前 3 名
curl "http://localhost:8080/rank/top?n=3"
输出:
json
[
{"element":"Bob","score":100.0},
{"element":"Charlie","score":70.0},
{"element":"Alice","score":50.0}
]
6. 顺便聊聊缓存优化技巧
既然都用 Redis 了,讲几个实用点的优化:
- Key 过期策略
- 要养成设置 TTL 的习惯,防止撑爆内存。
SET key value EX 60
给数据加 60 秒过期时间。
- 热点 Key 预热
- 启动时先把热点数据塞进缓存,避免刚启动时被打爆数据库。
- 缓存穿透防护
- 对查询不到的数据也缓存一个短期空值,防止反复打 DB。
- 缓存雪崩防护
- 给不同 Key 设置随机 TTL,避免集体过期导致瞬间流量暴涨。
7. 注意事项
- 及时关闭实例:不玩的时候记得删,不然超出免费时长要付费。
- 加密码:ElastiCache 默认没密码,你最好在参数组里设置
requirepass
。 - 延迟问题:跨区访问会很慢,最好和服务器在同一区域。
8. 总结
- Amazon ElastiCache 免费套餐 = 白送一年线上 Redis,省了买云服务器的钱。
- 不光能练命令,还能顺手搞点缓存优化技巧。
- 如果你有自己的小项目,也可以直接用套餐里的 EC2 ,整个搭建在云上。
非常适合新手小白学习、实战Redis,也适合独立开发者把一些自己的小项目部署在上面,这么好的资源,可一定要利用起来,不能浪费了~
以上就是本文的全部内容啦。最后提醒一下各位工友,如果后续不再使用相关服务,别忘了在控制台关闭,避免超出免费额度产生费用~