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

相关推荐
回家路上绕了弯7 分钟前
让 AI 成为团队的共同能力
后端
70后写java的老码农16 分钟前
一个 starter 通吃 9 家主流大模型:Spring Boot 3.x + Spring AI 1.x 极简落地
后端
武子康41 分钟前
MultiNet 只听到一次命令,为什么连续触发?
人工智能·后端·agent
挖掘狂人1 小时前
同一个端口能不能被两个程序同时监听?
java·后端·程序员
codigger1 小时前
同一个端口能不能被两个程序同时监听?
java·后端·程序员·编程
2501_933923251 小时前
SpringCloud:OpenFeign快速实现
java·后端·spring cloud·openfeign
拖孩1 小时前
AI 帮我写的小程序上线 44 天:36 个人进了收银台,8 个人付钱
前端·后端·微信小程序
Rain的Java大神之路1 小时前
我,13年Java老兵,建了个免费网站,公开叫板“Java已死”:没有广告,没有付费墙,151个页面全是踩坑干货
java·后端·程序员
萧瑟余晖1 小时前
Spring Integration企业集成概览详解
java·后端·spring
小小张说故事1 小时前
Python 的赋值为什么不会复制对象?拆开引用、浅拷贝与深拷贝
后端·python