SpringBoot配置redis多数据库以及设置session存储到redis

点我直达转载这里

创建一个springboot项目
application.yml文件这样配置

server:
port: 8888
spring:
data:
redis:
database: 0 #session存储默认数据库
database-db: #多数据库配置
db0: 0
db1: 1
db7: 7
host: 127.0.0.1
port: 6379
password: 123456
jedis:
pool:
#最大连接数
max-active: 8
#最大阻塞等待时间(负数表示没限制)
max-wait: -1
#最大空闲
max-idle: 8
#最小空闲
min-idle: 0
#连接超时时间
timeout: 10000
创建class 项目名称.config.session.SessionConfig 该配置使得session存储到redis
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.ConfigureRedisAction;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 7200,redisNamespace = “data-session”)
public class SessionConfig {
@Bean
public static ConfigureRedisAction configureRedisAction(){
return ConfigureRedisAction.NO_OP;
}
}
创建class 文件.config.redis.StringRedisCaCheConfig是的可以自定义redis数据库
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.StringRedisTemplate;

import java.time.Duration;

@Configuration //–启用去掉注释
public class StringRedisCaCheConfig {

//redis数据库配置信息
@Value("${spring.data.redis.database-db.db0}")
private int db0;//数据0
@Value("${spring.data.redis.database-db.db1}")
private int db1;//数据1
@Value("${spring.data.redis.database-db.db7}")
private int db7;//数据7

//基本配置信息
@Value("${spring.data.redis.host}")
private String host;//连接地址
@Value("${spring.data.redis.port}")
private int port;//连接端口
@Value("${spring.data.redis.password}")
private String password;//连接密码
@Value("${spring.data.redis.timeout}")
private long timeout;//超时时间
//==============
@Value("${spring.data.redis.jedis.pool.max-active}")
private int maxActive;//最大连接数
@Value("${spring.data.redis.jedis.pool.max-wait}")
private int maxWait;//最大阻塞等待时间
@Value("${spring.data.redis.jedis.pool.max-idle}")
private int maxIdle;//最大空闲时间
@Value("${spring.data.redis.jedis.pool.min-idle}")
private int minIdle;//最小空闲时间

@Bean(name = "redisTemplate0")//数据库配置0
public StringRedisTemplate getRedisTemplate0(){
    return getStringRedisTemplate(db0);
}
@Bean(name = "redisTemplate1")//数据库配置1
public StringRedisTemplate getRedisTemplate1(){
    return getStringRedisTemplate(db1);
}
@Bean(name = "redisTemplate7")//数据库配置7
public StringRedisTemplate getRedisTemplate7(){
    return getStringRedisTemplate(db7);
}

// 配置redis连接池
@Bean
@Primary
public GenericObjectPoolConfig<Object>  getPoolConfig(){
    GenericObjectPoolConfig<Object> config = new GenericObjectPoolConfig<>();
    config.setMaxTotal(maxActive);
    config.setMaxWait(Duration.ofDays(maxWait));
    config.setMaxIdle(maxIdle);
    config.setMinIdle(minIdle);
    return config;
}

private StringRedisTemplate getStringRedisTemplate(int database) {
    // 构建工厂对象
    RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
    config.setHostName(host);
    config.setPort(port);
    config.setPassword(RedisPassword.of(password));
    LettucePoolingClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder()
            .commandTimeout(Duration.ofSeconds(timeout))
            .poolConfig(getPoolConfig())
            .build();
    LettuceConnectionFactory factory = new LettuceConnectionFactory(config, clientConfig);
    // 设置使用的redis数据库
    factory.setDatabase(database);
    // 重新初始化工厂
    factory.afterPropertiesSet();
    return new StringRedisTemplate(factory);
}

}
下面我们使用db7数据库创建class 项目.config.redis.RedisCacheDB7
import jakarta.annotation.Resource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;

@Component
public class RedisCacheDB7 {
@Resource(name = “redisTemplate7”)
RedisTemplate<String,String> redisTemplate;

public void setCache(String key,String value,long time){
    redisTemplate.opsForValue().set(key,value,time, TimeUnit.SECONDS);
}

public void setCache(String key,String value){
    setCache(key,value,7200L);
}

public String getCache(String key){
    return redisTemplate.opsForValue().get(key);
}

public boolean exists(String key) {
    return Boolean.TRUE.equals(redisTemplate.hasKey(key));
}

public void delCache(String key){
    //Boolean.TRUE.equals()的意思是判断一个Boolean对象是否与Boolean.TRUE相等。
    // 如果对象的值是true,则返回true,否则返回false。这是一种比较布尔值的常见方式。
    if(exists(key)){ // 键存在才执行删除
        redisTemplate.delete(key);
    }
}

}
然后就可以使用RedisCacheDB7在其他项目里面了

需要的maven包

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
        <version>3.1.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.11.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session-data-redis</artifactId>
        <version>3.1.1</version>
    </dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SpringBoot是一个开源的Java框架,简化了基于Java的应用程序的开发过程。它提供了各种开箱即用的功能和工具,使开发人员能够更加容易地构建可靠、高效和可扩展的应用程序。 JWT(JSON Web Token)是一种用于在网络应用间传递认证和授权信息的开放标准。使用JWT可以实现无状态的身份验证,避免了使用传统的session和cookie的麻烦。 Security是Spring框架提供的身份验证和授权的模块,它提供了一套强大且灵活的安全机制可以应用于Spring应用中。 Redis是一个开源的内存数据存储系统,常用于缓存、消息队列等场景。它支持多种数据结构,如字符串、列表、哈希、集合等,并提供了丰富的数据操作命令。 脚手架是一个预先配置好的项目模板,可以帮助开发人员快速搭建项目骨架,包括项目结构、依赖库、配置文件等。 基于SpringBoot、JWT、Security和Redis的脚手架可以提供一个快速开发安全可靠的Java应用的基础框架。 脚手架的主要功能包括: 1. 用户注册、登录和注销功能,使用JWT进行身份验证和授权。 2. 用户角色和权限管理,保护资源的访问权限。 3. 使用Redis作为缓存,提高系统性能和响应速度。 4. 集成其他常用的功能模块,如日志记录、错误处理、数据库操作等。 5. 提供项目结构、配置文件和依赖库的预配置,开发人员可以基于此快速开始项目开发。 使用该脚手架可以大大减少项目搭建的时间和精力,提高开发效率和代码质量。开发人员可以专注于业务逻辑的实现,而无需关心底层的技术细节。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值