SpringBoot整合Redis完整版

主要工具:
Oracle VM VirtualBox----虚拟机
Redis Desktop Manager----Redis可视工具
CentOS7----镜像
Docker----容器引擎
Redis----缓存数据库

1、创建SpringBoot2.0项目
2、开启虚拟机或者服务器,我这里用的是虚拟机,linux系统的CentOS7,用的是docker
3、使用Docker安装Redis,执行命令docker pull redis
在这里插入图片描述
等待下载,下载完成后就可以进行下一步。也可以用命令查看一下是否成功下载,命令:docker imags
4、运行Redis,执行命令:docker run -d -p 6379:6379 --name myredis redis
5、打开Redis Desktop Manager连接Redis在这里插入图片描述
在这里插入图片描述
这样代表连接成功!
在这里插入图片描述
如果不知道虚拟机IP地址,可以输入命令:ip addr
在这里插入图片描述
可以打开数据库,看看redis结构是如何
在这里插入图片描述
6、引入maven包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>RELEASE</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>RELEASE</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>RELEASE</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>RELEASE</version>
    <scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.ibatis/ibatis-core -->
<dependency>
    <groupId>org.apache.ibatis</groupId>
    <artifactId>ibatis-core</artifactId>
    <version>3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/aopalliance/aopalliance -->
<dependency>
    <groupId>aopalliance</groupId>
    <artifactId>aopalliance</artifactId>
    <version>1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/aspectj/aspectjweaver -->
<dependency>
    <groupId>aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.5.4</version>
</dependency>

7、配置文件application.properties

#mysql数据库
spring.datasource.url=jdbc:mysql://47.105.34.159:3306/java_test
spring.datasource.username=java_test
spring.datasource.password=YdyFyKtdY3yKjDY4

#配置mybatis
mybatis.config-location=classpath:mybatis/SqlMapConfig.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

#日志
logging.path=E:/java/log
logging.level.com.kinglove = trace

#配置redis地址,这里没有设置密码
spring.redis.host=192.168.1.153

8、在入口文件写入@EnableCaching注解

@MapperScan({"com.kinglove.springbootlucky.mapper"})
@SpringBootApplication
@EnableCaching
public class SpringbootluckyApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootluckyApplication.class, args);
    }

}

9、在service层写入@Cacheable注解

@Cacheable(cacheNames={"project"})
public Object select(Integer id){
    return gavinProjectMapper.selectByPrimaryKey(id);
};

10、所有实体类都是序列化,实体类都要加上接口Serializable

public class GavinProject implements Serializable

/11、配置Redis成功!,运行看一下它有没有缓存进去
在这里插入图片描述
查询成功!看一下控制台打印信息
在这里插入图片描述
可以看到它查询了数据库,然后看一下数据有没有缓存进去redis
在这里插入图片描述
成功缓存起来!但是发现一个问题,数据并不是我们想要的样子。现在稍微做一下小事情,就可以解决!
12、序列化,写一个redis配置类

@Configuration
public class RedisConfig extends CachingConfigurerSupport {
    /**
     * 缓存管理器
     */
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
        //初始化一个RedisCacheWriter
        RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
        //设置CacheManager的值序列化方式为json序列化
        RedisSerializer<Object> jsonSerializer = new GenericJackson2JsonRedisSerializer();
        RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair
                .fromSerializer(jsonSerializer);
        RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig()
                .serializeValuesWith(pair);
        //设置默认超过期时间是30秒
        defaultCacheConfig.entryTtl(Duration.ofSeconds(30));
        //初始化RedisCacheManager
        return new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
    }
}

13、重新部署项目,再此查询,序列化成功!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值