连接池

SpringBoot 2.x 一个项目中使用RedisTemplate操作多个Redis库(使用新版本驱动)

六月ゝ 毕业季﹏ 提交于 2020-01-22 19:21:37
SpringBoot 2.x 一个项目中使用RedisTemplate操作多个Redis库 首先是配置文件 然后通过配置类注入RedisTemplate 解释几个地方: 最后是测试环节 背景:我们都知道Redis有16个数据库可以使用,在项目中需要用到redis的多个库,每次使用时再去通过一堆代码切换未免觉得太过麻烦,所以直接通过配置注入多个RedisTemplate,需要用到哪个库时直接使用对应的RedisTemplate即可 首先是配置文件 在application.properties中添加redis的相关配置 #redis多数据配置 redis . database . test1 = 1 redis . database . test2 = 2 redis . host = 127.0 .0 .1 redis . port = 6379 redis . password = root ##连接超时,此处使用单位秒 redis . timeout = 180 ##连接池配置 redis . pool . max - active = 8 redis . pool . max - idle = 8 redis . pool . min - idle = 0 redis . pool . max - wait = - 1 数据库的选择可根据业务需求配置多个,此处测试只配置了两个

Spring Boot 集成 Druid

天涯浪子 提交于 2020-01-22 18:14:51
一、Druid 介绍 Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 Druid是一个开源项目,源码托管在github上,源代码仓库地址是 https://github.com/alibaba/druid 。同时每次Druid发布正式版本和快照的时候,都会把源码打包,你可以从上面的下载地址中找到相关版本的源码。 通过Druid连接池中间件, 我们可以实现: 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。 替换传统的DBCP和C3P0连接池中间件。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。 数据库密码加密。直接把数据库密码写在配置文件中,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。 SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。 扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。 更多详细信息参考官方文档:https:/

dbcp的基本配置

牧云@^-^@ 提交于 2020-01-22 15:51:43
initialSize :连接池启动时创建的初始化连接数量(默认值为0) maxActive :连接池中可同时连接的最大的连接数(默认值为8,调整为20,高峰单机器在20并发左右,自己根据应用场景定) maxIdle:连接池中最大的空闲的连接数,超过的空闲连接将被释放,如果设置为负数表示不限制(默认为8个,maxIdle不能设置太小,因为假如在高负载的情况下,连接的打开时间比关闭的时间快,会引起连接池中idle的个数 上升超过maxIdle,而造成频繁的连接销毁和创建,类似于jvm参数中的Xmx设置) minIdle:连接池中最小的空闲的连接数,低于这个数量会被创建新的连接(默认为0,调整为5,该参数越接近maxIdle,性能越好,因为连接的创建和销毁,都是需要消耗资源的;但是不能太大,因为在机器很空闲的时候,也会创建低于minidle个数的连接,类似于jvm参数中的Xmn设置) maxWait :最大等待时间,当没有可用连接时,连接池等待连接释放的最大时间,超过该时间限制会抛出异常,如果设置-1表示无限等待(默认为无限,调整为60000ms,避免因线程池不够用,而导致请求被无限制挂起) poolPreparedStatements:开启池的prepared(默认是false,未调整,经过测试,开启后的性能没有关闭的好。) maxOpenPreparedStatements

dbcp 详细配置

可紊 提交于 2020-01-22 15:49:31
1.配置参数 username : 连接用户名 password: 连接密码 url : 连接 url( 如果连接 mysql ,格式为 jdbc:mysql://ip:port/dbname) driverClassName : jdbc driver 名字 ( 如果是 mysql ,则为com.mysql.jdbc.Driver) connectionProperties : 当建立一个数据库连接的时候,这些属性参数将传给 jdbc driver ,参数的形式必须是 [propertyName=property;]* 。 注: username 和 password 必须明确的传给 driver, 不必包含在这个属性中。 i nitialSize : 默认值是 0, 连接池创建连接的初始连接数目 maxActive : 默认值是 8, 连接池中同时可以分派的最大活跃连接数 maxIdle : 默认是 8 ,连接池中最大空闲连接数 minIdle : 默认是 0, 连接数中最小空闲连接数 maxWait : 默认值是无限大,当连接池中连接已经用完了,等待建立一个新连接的最大毫秒数 ( 在抛异常之前 ) validationQuery : 一条 sql 语句,用来验证数据库连接是否正常。这条语句必须是一个查询模式,并至少返回一条数据。一般用“ select 1 ”

dbcp基本配置和重连配置 -- mysql 8小时自动断开连接的问题

别等时光非礼了梦想. 提交于 2020-01-22 15:48:53
1. 引入dbcp (选择1.4) Java代码 com.alibaba.external jakarta.commons.dbcp 1.4 2. dbcp的基本配置 相关配置说明: initialSize :连接池启动时创建的初始化连接数量(默认值为0) maxActive :连接池中可同时连接的最大的连接数(默认值为8,调整为20,高峰单机器在20并发左右,自己根据应用场景定) maxIdle:连接池中最大的空闲的连接数,超过的空闲连接将被释放,如果设置为负数表示不限制(默认为8个,maxIdle不能设置太小,因为假如在高负载的情况下,连接的打开时间比关闭的时间快,会引起连接池中idle的个数 上升超过maxIdle,而造成频繁的连接销毁和创建,类似于jvm参数中的Xmx设置) minIdle:连接池中最小的空闲的连接数,低于这个数量会被创建新的连接(默认为0,调整为5,该参数越接近maxIdle,性能越好,因为连接的创建和销毁,都是需要消耗资源的;但是不能太大,因为在机器很空闲的时候,也会创建低于minidle个数的连接,类似于jvm参数中的Xmn设置) maxWait :最大等待时间,当没有可用连接时,连接池等待连接释放的最大时间,超过该时间限制会抛出异常,如果设置-1表示无限等待(默认为无限,调整为60000ms,避免因线程池不够用,而导致请求被无限制挂起)

druid连接池的时候,报错误:java.sql.SQLException: sql injection violation, syntax error: syntax error, error

眉间皱痕 提交于 2020-01-22 08:40:00
因为项目中使用的是Oracle数据库,由于用到了Oracle中的over开窗函数导致sql语法在过druid连接池的 wall 拦截器时被拦截报错:java.sql.SQLException: sql injection violation, syntax error: syntax error, error 解决办法:1.优化你的SQL;2.关闭wall拦截器 关闭wall拦截器:我没有在主配置中去掉wall拦截器,而是单独在master数据源单独配置不使用wall拦截器 来源: CSDN 作者: 蓝之刃 链接: https://blog.csdn.net/qq_16320025/article/details/103875248

springboot+druid

戏子无情 提交于 2020-01-21 09:44:22
Druid是一个数据库连接池,是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。 引入依赖包 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.18</version> </dependency> application.properties spring.druid.username=druidadmin spring.druid.password=druidadmin #连接池的配置信息 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 default:0 spring.datasource.druid.initial-size=8 #最小连接池数量。maxIdle已经废弃 spring.datasource.druid.min-idle=8 #spring.datasource.druid.max-idle= #最大连接池数量

JDBC连接池与工具类

耗尽温柔 提交于 2020-01-21 08:19:57
1.连接池概述 用池来管理Connection,这样可以重复使用Connection,有了池,所以我们就不用自己来创建Connection, 而是通过池来获取Connection对象,当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection, 而是把Connection归还给池,池就可以再利用这个Connection对象了 2.C3P0 public class Demo1 { @Test public void test() throws Exception { //获得连接池 ComboPooledDataSource dataSource = new ComboPooledDataSource(); //设置连接池与数据库的基本项 dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql:///demo"); dataSource.setUser("root"); dataSource.setPassword("root"); //初始化连接数目 dataSource.setInitialPoolSize(10); //最小连接个数 dataSource.setMinPoolSize(2); //最大连接个数

JDBC连接池&DBUtils

夙愿已清 提交于 2020-01-21 08:19:42
JDBC 连接池 DBCP: Apache推出的 Database Connection Pool 使用步骤: > 添加 jar包 commons-dbcp-1.4.jar commons-pool-1.5.6.jar l 创建 DBCP连接池工具类 n 规范接口 :javax.sql.DataSource接口 n 实现类 :BasicDataSource, 重写接口中的方法 getConnection() 使用读取配置文件的方式 (加案例 ) DBCP中有一个工厂类 BasicDataSourceFactory 工厂类中有一个静态方法 static DataSource createDataSource(Properties prop) 此方法返回的就是 DataSource接口的实现类对象 BasicDataSource 创建 Propertis 集合 +IO技术读取配置文件 把配置文件传入 BasicDataSourceFactory静态方法 createDataSource中 public class DBCPUtilsReadConfig { private static DataSource dataSourse; static{ try { InputStream is = DBCPUtilsReadConfig.class.getClassLoader()

JDBC 连接池的两种方式——dbcp & c3p0

帅比萌擦擦* 提交于 2020-01-21 08:19:31
申明:本文对于连接资源关闭采用自定义的 JDBCUtils 工具: package com.test.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public final class JDBCUtils { private static String driver="com.mysql.jdbc.Driver"; private static String url="jdbc:mysql://localhost:3306/store28"; private static String user="root"; private static String password="root1234"; private JDBCUtils(){} static { /** * 驱动注册 */ try { Class.forName(driver); } catch (ClassNotFoundException e) { throw new ExceptionInInitializerError(e); } } /** * 获取