栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot整合redis

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot整合redis

在这里没有下载和安装redis的教程,如何redis还没有下载安装的,请先下载安装redis

1.导入redis的依赖,版本根据自己的springboot决定
        
            org.springframework.boot
            spring-boot-starter-data-redis
            2.5.4
        
2.pom配置文件中添加redis的配置
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=gulimall-search 

server.port=12000

spring.couchbase.env.timeouts.socket-connect=60000

spring.thymeleaf.cache=false


#redis 服务器ip
spring.redis.host=192.168.56.10
spring.redis.port=6379
spring.session.store-type=redis
# spring.redis.password=leyou
#redis请求超时时间,超过此值redis自动断开连接
spring.redis.timeout=10000ms

注意此处,如果redis设置了密码,必须配置密码spring.redis.password=redis密码

3.在需要使用redis的地方注入StringRedisTemplate

@Controller
public class LoginController {

    @Autowired
    ThirdPartFeignService thirdPartFeignService;
    @Autowired
    StringRedisTemplate redisTemplate;

    @Autowired
    MemberFeignService memberFeignService;

    @ResponseBody
    @GetMapping("/sms/sendCode")
    public R sendCode(@RequestParam("phone") String phone){
        //TODO 接口防刷
        String redisCode = redisTemplate.opsForValue().get(AuthServerConstant.SMS_CODE_CACHE_PREFIX + phone);
        long l = Long.parseLong(redisCode.split("_")[1]);
        if (System.currentTimeMillis()-1<60000){
//            60s内不能在发送验证码
            return R.error(BizCodeEnume.SMS_CODE_EXCEPTION.getCode(),BizCodeEnume.SMS_CODE_EXCEPTION.getMsg());
        }
        String code = UUID.randomUUID().toString().substring(0, 5);
        String substring = code+"_"+System.currentTimeMillis();
        redisTemplate.opsForValue().set(AuthServerConstant.SMS_CODE_CACHE_PREFIX+phone,substring,10, TimeUnit.MINUTES);
        thirdPartFeignService.sendCode(phone,code);
        return R.ok();
    }
4.调用StringRedisTemplate的方法进行redis操作
StringRedisTemplate实现了RedisOperations,RedisOperations中有许多操作redis的方法
public interface RedisOperations {
    @Nullable
     T execute(RedisCallback var1);

    @Nullable
     T execute(SessionCallback var1);

    List executePipelined(RedisCallback var1);

    List executePipelined(RedisCallback var1, RedisSerializer var2);

    List executePipelined(SessionCallback var1);

    List executePipelined(SessionCallback var1, RedisSerializer var2);

    @Nullable
     T execute(RedisScript var1, List var2, Object... var3);

    @Nullable
     T execute(RedisScript var1, RedisSerializer var2, RedisSerializer var3, List var4, Object... var5);

    @Nullable
     T executeWithStickyConnection(RedisCallback var1);

    @Nullable
    Boolean hasKey(K var1);

    @Nullable
    Long countExistingKeys(Collection var1);

    @Nullable
    Boolean delete(K var1);

    @Nullable
    Long delete(Collection var1);

    @Nullable
    Boolean unlink(K var1);

    @Nullable
    Long unlink(Collection var1);

    @Nullable
    DataType type(K var1);

    @Nullable
    Set keys(K var1); 
 5.可以自己写工具类 

自己对redis的调用和操作进行封装,自己写一些常用的工具类,方便的进行redis的操作

5.1 创建接口RedisService
public interface RedisService {
    
    void set(String key, String value);

    
    void set(String key, String value, Duration minutes);

    
    String get(String key);

    
    boolean expire(String key, long expire);

    
    void remove(String key);

    
    Long increment(String key, long delta);

    
    Boolean hasKey(String key);

}
5.2 创建实现类RedisServiceImpl
public class RedisServiceImpl implements RedisService {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Override
    public void set(String key, String value) {
        stringRedisTemplate.opsForValue().set(key, value);
    }

    @Override
    public void set(String key, String value, Duration minutes) {
        stringRedisTemplate.opsForValue().set(key, value,minutes);
    }

    @Override
    public String get(String key) {
        return stringRedisTemplate.opsForValue().get(key);
    }

    @Override
    public boolean expire(String key, long expire) {
        return stringRedisTemplate.expire(key, expire, TimeUnit.SECONDS);
    }

    @Override
    public void remove(String key) {
        stringRedisTemplate.delete(key);
    }

    @Override
    public Long increment(String key, long delta) {
        return stringRedisTemplate.opsForValue().increment(key,delta);
    }

    @Override
    public Boolean hasKey(String key) {
        return stringRedisTemplate.hasKey(key);
    }
}

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号