Spring Boot + Redis 实战:8 个企业项目最常用代码模板

上一篇文章讲了 Redis 的应用场景

这一篇直接给大家 Spring Boot 项目最常用的 Redis 代码模板,可以直接复制到项目中使用。


一、缓存模板

ini 复制代码
public User getUser(Long userId){

    String key = "user:info:"+userId;

    Object cache = redisTemplate.opsForValue().get(key);

    if(cache != null){
        return (User) cache;
    }

    User user = userMapper.selectById(userId);

    redisTemplate.opsForValue().set(key,user,30,TimeUnit.MINUTES);

    return user;
}

二、验证码模板

typescript 复制代码
public void saveCode(String phone,String code){

    String key = "sms:code:"+phone;

    redisTemplate.opsForValue()
            .set(key,code,5,TimeUnit.MINUTES);
}

校验:

vbnet 复制代码
public boolean checkCode(String phone,String code){

    String key = "sms:code:"+phone;

    String cache = (String) redisTemplate.opsForValue().get(key);

    return code.equals(cache);
}

三、限流模板

arduino 复制代码
public boolean limit(String key,int max){

    Long count = redisTemplate.opsForValue().increment(key);

    if(count == 1){
        redisTemplate.expire(key,1,TimeUnit.MINUTES);
    }

    return count <= max;
}

四、分布式锁模板(RedisTemplate)

vbnet 复制代码
public boolean tryLock(String key){

    return Boolean.TRUE.equals(
            redisTemplate.opsForValue()
                    .setIfAbsent(key,"1",30,TimeUnit.SECONDS)
    );
}

释放锁:

go 复制代码
redisTemplate.delete(key);

五、Redisson 分布式锁模板

推荐生产使用。

csharp 复制代码
RLock lock = redissonClient.getLock("lock:order:"+orderId);

lock.lock();

try{

    //业务逻辑

}finally{

    lock.unlock();

}

六、排行榜模板

arduino 复制代码
public void addScore(String user,int score){

    redisTemplate.opsForZSet()
            .incrementScore("rank:user",user,score);

}

获取前10名:

ini 复制代码
Set<ZSetOperations.TypedTuple<Object>> rank =
        redisTemplate.opsForZSet()
                .reverseRangeWithScores("rank:user",0,9);

七、延迟队列模板

添加任务:

csharp 复制代码
redisTemplate.opsForZSet()
        .add("delay:task",taskId,System.currentTimeMillis()+60000);

获取任务:

ini 复制代码
Set<Object> tasks =
        redisTemplate.opsForZSet()
                .rangeByScore("delay:task",0,System.currentTimeMillis());

八、Set 去重模板

csharp 复制代码
redisTemplate.opsForSet()
        .add("sign:20260318",userId);

判断是否存在:

scss 复制代码
redisTemplate.opsForSet()
        .isMember("sign:20260318",userId);

最后

Redis 真正需要掌握的其实只有:

  • 5种数据结构
  • 10种应用场景

然后配合 Spring Boot 使用,就已经可以应对绝大多数企业项目。

相关推荐
小满zs1 分钟前
Go语言第二章(小无相功)
后端·go
用户8356290780512 分钟前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
karry_k8 分钟前
MyBatis批量insert-select踩坑:useGeneratedKeys=true 可能让PostgreSQL返回大量插入结果
java·后端
妙码生花10 分钟前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
贰先生14 分钟前
Xiuno BBS X版 用户封禁系统
后端
karry_k15 分钟前
PostgreSQL 在 MyBatis 中执行正常 SQL 失效:一次 DELETE USING 踩坑记录
java·后端
ServBay42 分钟前
不会写代码也能建站?AI 时代,非技术创始人如何从零搭建自己的 Web 项目
后端·mcp
Moladev1 小时前
如何在 Electron 中接入 OpenAI 兼容的大模型 API:Snaptium 的主进程代理实践
后端
Oneslide1 小时前
根分区爆满却找不到大文件?深度解析 Linux df 与 du 不一致的经典故障
后端
魏祖潇1 小时前
framework 整合实战——DDD/TDD/SDD 三件套在 framework 仓的真实落地
人工智能·后端