SpringBoot项目启动时自动加载数据到Redis的完整实现方案,用于存储字典,定时任务,登录用户等
一、基础配置
在pom.xml中添加必要依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3</version>
</dependency>
二、核心实现方式
方式一:使用CommandLineRunner
接口
package com.thk.config;import com.alibaba.fastjson.JSON;
import com.thk.domain.SysUser;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;import java.util.concurrent.TimeUnit;/**** 方式一:使用CommandLineRunner接口*/
@Component
@Slf4j
public class AddUserToRedisConfig implements CommandLineRunner {// 自动注入RedissonClient实例,用于操作Redis@Autowiredprivate RedissonClient redissonClient;// 重写CommandLineRunner接口的run方法@Overridepublic void run(String... args) throws Exception {// 创建一个SysUser对象SysUser sysUser = new SysUser();// 设置用户名为"张三"sysUser.setName( "张三" );// 设置密码为"123456"sysUser.setPassword( "123456" );// 从Redisson客户端获取名为"users"的Bucket对象RBucket<Object> users = redissonClient.getBucket( "userone" );// 将SysUser对象转为JSON字符串并存入Redisusers.set( JSON.toJSONString( sysUser ) );// 设置该键值对的过期时间为30分钟users.expire( 30, TimeUnit.MINUTES );log.info( "添加成功:取出的数据是" + users.get() );}
}
方式二:使用@PostConstruct
注解
package com.thk.config;import com.alibaba.fastjson.JSON;
import com.thk.domain.SysUser;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import java.util.concurrent.TimeUnit;/*** 方式二:使用@PostConstruct注解*/
@Component
@Slf4j
public class AddUserToRedisCongfigTwo {// 自动注入RedissonClient实例,用于操作Redis@Autowiredprivate RedissonClient redissonClient;// 添加 @PostConstruct注解@PostConstructpublic void addUserToRedis() {// 创建一个SysUser对象SysUser sysUser = new SysUser();// 设置用户名为"张三"sysUser.setName( "李四" );// 设置密码为"123456"sysUser.setPassword( "123456" );// 从Redisson客户端获取名为"users"的Bucket对象RBucket<Object> users = redissonClient.getBucket( "usertwo" );// 将SysUser对象转为JSON字符串并存入Redisusers.set( JSON.toJSONString( sysUser ) );// 设置该键值对的过期时间为30分钟users.expire( 30, TimeUnit.MINUTES );log.info( "添加成功:取出的数据是" + users.get() );}
}