广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot如何整合Druid、Redis
  • 690
分享到

SpringBoot如何整合Druid、Redis

2023-06-29 02:06:31 690人浏览 安东尼
摘要

这篇文章主要介绍SpringBoot如何整合Druid、Redis,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.整合Druid1.1Druid简介Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,

这篇文章主要介绍SpringBoot如何整合Druid、Redis,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1.整合Druid

1.1Druid简介

Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。

Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控

Druid 可以很好的监控 DB 池连接和 sql 的执行情况,天生就是针对监控而生的 DB 连接池。

1.2添加上 Druid 数据源依赖

<dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid-spring-boot-starter</artifactId>            <version>1.2.8</version>        </dependency>

1.3使用Druid 数据源

server:  port: 8080spring:  datasource:    druid:      url: jdbc:mysql://localhost:3306/eshop?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true      username: xxx      passWord: xxx      driver-class-name: com.Mysql.cj.jdbc.Driver      initial-size: 10      max-active: 20      min-idle: 10      max-wait: 60000      time-between-eviction-runs-millis: 60000      min-evictable-idle-time-millis: 300000      stat-view-servlet:        enabled: true        login-username: admin        login-password: 1234logging:  level:    com.wyy.spring.Dao: debug

测试一下看是否成功!

package com.wyy.spring;import com.wyy.spring.Dao.StudentMapper;import com.wyy.spring.service.StudentService;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import javax.sql.DataSource;@SpringBootTestclass SpringBoot04ApplicationTests {    @Autowired    DataSource dataSource;    @Test    void contextLoads() {        System.out.println(dataSource.getClass());    }}

打印结果 

SpringBoot如何整合Druid、Redis

 2.整合Redis

2.1添加上 redis依赖

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

2.2yml添加redis配置信息 

redis:    database: 0    host: 120.0.0.0    port: 6379    password: xxxx    jedis:      pool:        max-active: 8        max-wait: -1        max-idle: 8        min-idle: 0    timeout: 10000

2.3 redis 配置类 

package com.wyy.spring.conf; import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.CachinGConfigurerSupport;import org.springframework.cache.annotation.EnableCaching;import org.springframework.cache.interceptor.KeyGenerator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.data.redis.cache.RedisCacheConfiguration;import org.springframework.data.redis.cache.RedisCacheManager;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.GenericJackson2JSONRedisSerializer;import org.springframework.data.redis.serializer.RedisSerializationContext;import org.springframework.data.redis.serializer.RedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;import org.springframework.util.ClassUtils;import java.lang.reflect.Array;import java.lang.reflect.Method;import java.time.Duration;@Configuration@EnableCachingpublic class RedisConfiguration extends CachingConfigurerSupport {    @Bean    @Primary        CacheManager cacheManager(RedisConnectionFactory factory) {        RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()                .computePrefixWith(cacheName -> cacheName + ":-cache-:")                                .entryTtl(Duration.ofHours(1))                                .disableCachingNullValues()                                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(                        new GenericJackson2jsonRedisSerializer()                ));                RedisCacheManager manager = RedisCacheManager.builder(factory)                .cacheDefaults(cacheConfiguration)                .build();        return manager;    }    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();        redisTemplate.setConnectionFactory(factory);        RedisSerializer stringSerializer = new StringRedisSerializer();                redisTemplate.seTKEySerializer(stringSerializer);                redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());                redisTemplate.setHashKeySerializer(stringSerializer);                redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());        redisTemplate.afterPropertiesSet();        return redisTemplate;    @Override    public KeyGenerator keyGenerator() {        return (Object target, Method method, Object... params) -> {            final int NO_PARAM_KEY = 0;            final int NULL_PARAM_KEY = 53;            StringBuilder key = new StringBuilder();                        key.append(target.getClass().getSimpleName())                    .append(".")                    .append(method.getName())                    .append(":");            if (params.length == 0) {                return key.append(NO_PARAM_KEY).toString();            }            int count = 0;            for (Object param : params) {                                if (0 != count) {                    key.append(',');                }                if (param == null) {                    key.append(NULL_PARAM_KEY);                } else if (ClassUtils.isPrimitiveArray(param.getClass())) {                    int length = Array.getLength(param);                    for (int i = 0; i < length; i++) {                        key.append(Array.get(param, i));                        key.append(',');                    }                } else if (ClassUtils.isPrimitiveOrWrapper(param.getClass()) || param instanceof String) {                    key.append(param);                } else {                                        key.append(param.hashCode());                count++;            return key.toString();        };}

@CacheConfig 一个类级别的注解,允许共享缓存的cacheNames、KeyGenerator、CacheManager 和 CacheResolver

@Cacheable 用来声明方法是可缓存的。将结果存储到缓存中以便后续使用相同参数调用时不需执行实际的方 法。直接从缓存中取值

@CachePut 标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法, 并将执行结果以键值对的形式存入指定的缓存中。

@CacheEvict 的作用 主要针对方法配置,能够根据一定的条件对缓存进行清空 

以上是“SpringBoot如何整合Druid、Redis”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: SpringBoot如何整合Druid、Redis

本文链接: https://www.lsjlt.com/news/322103.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot如何整合Druid、Redis
    这篇文章主要介绍SpringBoot如何整合Druid、Redis,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.整合Druid1.1Druid简介Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,...
    99+
    2023-06-29
  • SpringBoot整合Druid、Redis的示例详解
    目录1.整合Druid1.1Druid简介1.2添加上 Druid 数据源依赖1.3使用Druid 数据源 2.整合redis2.1添加上 redis依赖2.2yml添加r...
    99+
    2022-11-13
  • SpringBoot中如何整合Druid数据源
    这篇文章主要介绍“SpringBoot中如何整合Druid数据源”,在日常操作中,相信很多人在SpringBoot中如何整合Druid数据源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoot中...
    99+
    2023-06-08
  • springboot如何整合Redis
    这篇文章主要介绍springboot如何整合Redis,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!引入依赖:在pom文件中添加redis依赖:<dependency>   ...
    99+
    2023-06-19
  • springboot整合mybatisplus与druid详情
    加坐标可以使用https://mvnrepository.com/来查找 先加以下坐标: 使用的数据库介绍: 配置连接数据库: spring: datasource: ...
    99+
    2022-11-13
  • SpringBoot整合Redis
    SpringBoot中的Redis 在 SpringBoot2.x 之后,原来使用的jedis被替换为了lettuce jedis : 采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用 jedis pool 连接 池! ...
    99+
    2023-09-07
    redis spring boot java
  • springboot整合druid及配置依赖
    目录Druid简介配置依赖基本-配置信息扩展-配置 druid 监控功能Druid简介 Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。 ...
    99+
    2022-11-12
  • SpringBoot怎么整合Druid数据源
    本篇内容主要讲解“SpringBoot怎么整合Druid数据源”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot怎么整合Druid数据源”吧! SprintBoot 默...
    99+
    2023-07-02
  • 解决springboot整合druid遇到的坑
    springboot整合druid的坑 项目环境 springboot 2.1.6.RELEASE jdk 1.8 pom.xml配置 <?xm...
    99+
    2022-11-12
  • SpringBoot详解如何进行整合Druid数据源
    目录1.自定义方式1.添加依赖2.编写配置3.测试2.starter方式(推荐)1.添加依赖2.编写配置3.测试Druid是数据库连接池,它能够提供强大的监控和扩展功能。官方文档 S...
    99+
    2022-11-13
  • SpringBoot中如何整合Lettuce redis
    这篇文章主要介绍“SpringBoot中如何整合Lettuce redis”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot中如何整合Lettuce redis”文章能帮助大家解决问...
    99+
    2023-06-08
  • springboot整合druid及多数据源配置
    前言 本篇主要分两部分 ①springboot整合druid的代码配置,以及druid的监控页面演示;②对实际场景中多数据源的配置使用进行讲解。 一、springboot整合druid的演示demo 可以用idea快速生成一个可运行的dem...
    99+
    2023-10-24
    spring boot java spring
  • SpringBoot怎么进行整合Druid数据源
    今天小编给大家分享一下SpringBoot怎么进行整合Druid数据源的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.自定...
    99+
    2023-07-02
  • Springboot整合redis步骤
    一、加入依赖 com.github.spt-oss spring-boot-starter-data-redis 2.0.7.0 redis依赖二、添加redis.properties配置文件 # REDIS...
    99+
    2017-06-25
    Springboot整合redis步骤
  • springboot整合redis配置
    1、引入pom依赖 org.springframework.boot spring-boot-starter-data-redis 2、增加配置类 RedisCo...
    99+
    2023-08-23
    redis spring boot java
  • SpringBoot整合Mybatis与druid实现流程详解
    目录SpringBoot整合junitSpringBoot整合junitSpringBoot整合junit的classesSpringBoot整合Mybatis整合前的准备整合Myb...
    99+
    2022-11-13
    SpringBoot整合Mybatis与druid SpringBoot整合Mybatis SpringBoot整合druid
  • Java之SpringBoot自定义配置与整合Druid
    目录1、SpringBoot配置文件1.1 优先级1.2 yaml的多文档配置2、扩展SpringMVC2.1 添加自定义视图解析器3、自定义DruidDataSources3.1 ...
    99+
    2022-11-12
  • 详解SpringBoot自定义配置与整合Druid
    目录SpringBoot配置文件优先级yaml的多文档配置扩展SpringMVC添加自定义视图解析器自定义DruidDataSourcesAbout Druid添加依赖配置数据源其他...
    99+
    2022-11-12
  • SpringBoot整合Druid数据源的方法实现
    目录1、在创建SpringBoot项目的时候,在pom.xml maven中添加依赖:2、在 application.yml(或aproperties)中添加相应的配置:3、 log...
    99+
    2022-11-13
  • 使用SpringBoot中整合Redis
    目录SpringBoot中整合RedisSpringBoot整合Redis改不了database问题SpringBoot中整合Redis 本次,我们以IDEA + SpringBoo...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作