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

相关推荐
烈风逍遥30 分钟前
第七篇:提示词模板管理与 Agent 提示词编排
前端·人工智能·后端
站大爷IP41 分钟前
Python的Django ORM把我坑惨了,原来select_related和prefetch_related的区别这么大
后端
用户EasyAdminBlazor1 小时前
AdminTable 源码解析:EasyAdminBlazor 如何实现通用 CRUD?
后端
知守观1 小时前
Spring AOP + 自定义注解实现三角色权限控制:从设计到落地的完整方案
后端
Mikko71 小时前
jackson-databind 升到 2.21.6 就安全了吗?jackson-core 是另一个坐标,它那条 high 全局库至今没收
java·后端·安全·json
Ticnix1 小时前
我调了三个月 overlap=50,它其实一次都没生效
后端·python·agent
斯维赤1 小时前
LangChain4j 入门教学(Java 后端狂喜版
java·后端
数据库小学妹1 小时前
MySQL库存扣减实战:原子UPDATE、分桶方案与锁范围分析
数据库·后端·mysql
旺仔不是程序员1 小时前
LIMIT 1:PostgreSQL 只取一行的高效查询姿势
数据库·后端·sql
知守观1 小时前
Java POI 动态二级表头导出实战:并集计算 + 合并单元格 + 冻结列的完整实现
后端