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 使用,就已经可以应对绝大多数企业项目。

相关推荐
GetcharZp7 小时前
抛弃低效SSH!这套Ansible+Web可视化神器,让你天天准点下班!
后端
weixin_4462608511 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
ttwuai12 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
用户83562907805112 小时前
Python 实现 Excel 页面布局与打印设置自动化
后端·python
用户99314415798412 小时前
微服务框架中获取用户信息
后端
xuanWb12 小时前
手写一个 LLM API 网关:Anthropic 与 OpenAI 协议转换的完整实现
后端
苍何13 小时前
给 Codex 换皮肤这门生意,被我开源了
后端
用户83562907805113 小时前
Python 实现 Excel 命名范围(Named Range)的创建与管理
后端·python
程序员David13 小时前
我让 Claude 从架构文档一路干到代码,踩了三个坑才摸清边界
后端