首页 > 作文

SpringBoot整合Druid、Redis的示例详解

更新时间:2023-04-04 23:10:13 阅读: 评论:0

目录
1.整合druid1.1druid简介1.2添加上 druid 数据源依赖1.3使用druid 数据源2.整合redis2.1添加上 redis依赖2.2yml添加redis配置信息2.3 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 数据源

rver:  port: 8080spring:  datasource:    druid:      url: jdbc:mysql://localhost:3306/eshop?ussl=fal&rvertimezone=asia/shanghai&uunicode=true&characterencoding=utf-8&allowpublickeyretrieval=true      urname: 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-rvlet:        enabled: true        login-urname: admin        login-password: 1234logging:  level:    com.wyy.spring.dao: debug

测试一下看是否成功!

package com.wyy.spring;import com.wyy.spring.dao.studentmapper;import com.wyy.spring.rvice.studentrvice;import org.junit.jupiter.api.test;import org.springframework.beans.factory.annotation.a多少分才能考上高中utowired;import org.springframework.boot.test.context.springboottest;import javax.sql.datasource;@springboottestclass springboot04applicationtests {    @autowired    datasource datasource;    @test    void contextloads() {        system.out.println(datasource.getclass());    }}

打印结果

2.整合redis

2.1添加上 redis依赖

<dependency>            <groupid>org.springframework.boot</groupid>            <artifactid>spring-boot-starter-data-redis</artifactid>        </dependency>

2.2yml添加redis配置信息

redis:    databa: 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.rializer.genericjackson2jsonredisrializer;import org.springframework.data.redis.rializer.redisrializationcontext;import org.springframework.data.redis.rializer.redisrializer;import org.springframework.data.redis.s小学上学时间erializer.stringredisrializer;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))                /*禁用缓存空值,不缓存null校验*/                .disablecachingnullvalues()                /*设置cachemanager的值序列化方式为json序列化,可使用加入@class属性*/                .rializevalueswith(redisrializationcontext.rializat全国中小学生学籍查询ionpair.fromrializer(                        new genericjackson2jsonredisrializer()                ));        /*使用rediscacheconfiguration创建rediscachemanager*/        rediscachemanager manager = rediscachemanager.builder(factory)                .cachedefaults(cacheconfiguration)                .build();        return manager;    }    public redistemplate redistemplate(redisconnectionfactory factory) {        redistemplate<string, object> redistemplate = new redistemplate<string, object>();        redistemplate.tconnectionfactory(factory);        redisrializer stringrializer = new stringredisrializer();        /* key序列化 */        redistemplate.tkeyrializer(stringrializer);        /* va关于理想的名言lue序列化 */        redistemplate.tvaluerializer(new genericjackson2jsonredisrializer());        /* hash key序列化 */        redistemplate.thashkeyrializer(stringrializer);        /* hash value序列化 */        redistemplate.thashvaluerializer(new genericjackson2jsonredisrializer());        redistemplate.afterpropertiest();        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();            /* class.method: */            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);                } el 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(',');                    }                } el if (classutils.isprimitiveorwrapper(param.getclass()) || param instanceof string) {                    key.append(param);                } el {                    /*javabean一定要重写hashcode和equals*/                    key.append(param.hashcode());                count++;            return key.tostring();        };}

@cacheconfig 一个类级别的注解,允许共享缓存的cachenames、keygenerator、cachemanager 和 cacheresolver

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

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

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

到此这篇关于springboot整合druid、redis的文章就介绍到这了,更多相关springboot整合druid、redis内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.c医疗事故处理办法om!

本文发布于:2023-04-04 23:10:11,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/897c16c295f884661ee5955a03abdc3e.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:SpringBoot整合Druid、Redis的示例详解.doc

本文 PDF 下载地址:SpringBoot整合Druid、Redis的示例详解.pdf

标签:缓存   数据源   序列化   数据库
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图