首页 > 数据库 >springboot集成redis

springboot集成redis

时间:2024-04-12 23:33:36浏览次数:13  
标签:集成 operations springboot redis token org import stringRedisTemplate

首先引入依赖

<!--redis坐标-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

在yml中引入redis数据库

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/big_event
    username: root
    password: 1234
  data:
    redis:
      host: localhost
      port: 6379


mybatis:
  configuration:
    map-underscore-to-camel-case: true #开启下划线驼峰命名之间的转换

测试代码

package com.di.bigevent;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;

import java.util.concurrent.TimeUnit;

@SpringBootTest//如果在这个测试类上添加了这个注解,那么将来单元测试方法执行前,会先初始化spring容器
public class RedisTest {


    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @Test
    public void testSet(){

        //往redis中存储一个键值对 StringRedisTemplate
        ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
        operations.set("username","zhangsan");
        operations.set("id","1",15, TimeUnit.SECONDS);
    }

    @Test
    public void testGet(){
        //从redis中获取键值对
        ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
        System.out.println(operations.get("username"));
    }
}

令牌主动失效

  • 把令牌存到redis中
  • 拦截器Intercepter中,同时验证自带的token和redis中的taken

首先在usercontroller中

 @Autowired
    private StringRedisTemplate stringRedisTemplate;

//把token存到redis中
            ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
            operations.set(token,token,1, TimeUnit.HOURS);

从拦截器中添加验证redis中token的步骤

@Autowired
    private StringRedisTemplate stringRedisTemplate;


//从redis中获取相同的token
            ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
            String redisToken = operations.get(token);
            if(redisToken==null)
            {
                //token已经失效了
                throw new RuntimeException();
            }

在修改密码的controller中,添加参数

@RequestHeader("Authorization") String token

修改密码后,删除redis中的token

//删除redis中对应的token
        ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
        operations.getOperations().delete(token);

标签:集成,operations,springboot,redis,token,org,import,stringRedisTemplate
From: https://www.cnblogs.com/muzhaodi/p/18132334

相关文章

  • Asp .Net Core 系列:集成 Refit 和 RestEase 声明式 HTTP 客户端库
    背景.NET中有没有类似Java中Feign这样的框架?经过查找和实验,发现在.NET平台上,虽然没有直接的Feign框架的端口,但是有一些类似的框架和库,它们提供了类似的功能和设计理念。下面是一些在.NET中用于声明式HTTP客户端的框架和库:Refit:Refit是一个用于构建声明式、类型......
  • redis自学(33)哨兵的作用和工作原理
    新建sentinel.conf文件。输入下面的内容  1是端口号2是sentinel声明的ip3是sentinel监控的master的ip和端口号,mymaster是集群的名字,也可以理解成给主节点起的名字,可以任意起名字。Slave的信息是从master得到的。2是选举master时的quorum值4是slave与master断开的最长超时......
  • python - redis rdb备份文件导入本地
    1.安装 rdbtoolspipinstallrdbtools 2.安装 python-lzfpipinstallpython-lzf 3. rdb文件导出为json文件rdb--cjson路径名称/备份文件名称.rdb-fxx.json 4. 解析json文件withopen('文件路径/xx.json','r')asjson_file:res=json.loa......
  • 对于redis和数据库数据不一致性的解决方案
    对比两种方案:1)先更新数据库,然后删redis。此方案,如果先更新数据库,然后服务宕机没有删除缓存,那么redis中存的一直是脏数据。2)先删除redis,然后更新数据库此方案,如果数据库更新时间比较长,查询操作比较频繁,会导致取到数据库的脏数据。(并发量不高的情况下使用)3)先删除redis,然后再......
  • Springboot2+vue2整合项目
    前端https://blog.csdn.net/m0_37613503/article/details/128961447数据库1.用户表CREATETABLE`x_user`(`id`int(11)NOTNULLAUTO_INCREMENT,`username`varchar(50)NOTNULL,`password`varchar(100)DEFAULTNULL,`email`varchar(50)DEFAULTNULL,`......
  • redis基础
    redis数据类型redis可以理解成一个全局的大字典,key就是数据的唯一标识符。根据key对应的值不同,可以划分成5个基本数据类型。redis={"name":"yuan","scors":["100","89","78"],"info":{"name":"rain"......
  • Redis--缓存雪崩、击穿、穿透
    本文转载自:https://xiaolincoding.com/redis/cluster/cache_problem.html 缓存异常会面临的三个问题:缓存雪崩、击穿和穿透。其中,缓存雪崩和缓存击穿主要原因是数据不在缓存中,而导致大量请求访问了数据库,数据库压力骤增,容易引发一系列连锁反应,导致系统奔溃。不过,一旦数据被重新......
  • 从用户中来,到用户中去:IPD集成产品开发之FFAB模型,让你的产品供不应求!
    IPD(集成产品开发)模型的核心价值在于它改变了企业对于产品研发的固有观点,将企业产研的重点由“技术为导向”升级为“用户需求为导向”,强调企业在产品的研发过程中坚持以用户/客户为中心。在IPD(集成产品开发)的模式中,需要企业或者团队在限定的时间内,开发完成高质量的产品,协同供应链......
  • 【Camunda】SpringBoot优雅集成Camunda 7工作流引擎,保姆级教程!
    From: https://mp.weixin.qq.com/s/lZmIucZYzqqwjBCtDAL9WA前言项目中需要用到工作流引擎来设计部分业务流程,框架选型最终选择了Camunda7,关于Camunda以及Activity等其他工作流引擎的介绍及对比不再介绍,这里只介绍与现有Springboot项目的集成以及具体使用及配置概念流程......
  • redis
    什么是Redisredis是一种基于内存的数据库,因为对数据的读写是在内存当中完成的,所以读写速度非常快,常用于缓存、消息队列、分布式锁等场景redis提供了多种数据类型来支持不同的业务场景,比如说String、Hash、List、Set(集合)等等,并且对数据类型的操作都是原子性的,因为执行命......