hikari jedis druid数据源配置
连接池依赖引入
<!--java驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <!--redis连接池--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.1.0</version> </dependency>
<!--druid连接池 mysql主流连接池1--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.18</version> </dependency>
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP --> <!--HikariCP连接池 mysql主流连接池2--> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>5.0.1</version> </dependency> <!--JdbcTemplate--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${springframework.version}</version> </dependency>
hikari数据源配置 官网地址:https://github.com/brettwooldridge/HikariCP

# 不同数据源这四个配置都会用到 spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #以下的配置项是hikari特有的配置 # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒 spring.datasource.hikari.connection-timeout=30000 # 最小连接数 spring.datasource.hikari.minimum-idle=5 # 最大连接数 spring.datasource.hikari.maximum-pool-size=15 # 自动提交 spring.datasource.hikari.auto-commit=true # 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),默认:10分钟 spring.datasource.hikari.idle-timeout=600000 # 连接池名字 spring.datasource.hikari.pool-name=DatebookHikariCP # 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms,建议设置比数据库超时时长少60秒 spring.datasource.hikari.max-lifetime=28740000 spring.datasource.hikari.connection-test-query=SELECT 1 #以下是针对MYSQL驱动的配置参数 # 在每个连接中缓存的语句的数量。默认值为保守值25。建议将其设置为250-500之间 spring.datasource.hikari.prepStmtCacheSize = 300 # 缓存的已准备SQL语句的最大长度,默认值是256,但是往往这个长度不够用 spring.datasource.hikari.prepStmtCacheSqlLimit = 2048 # 缓存开关,如果这里设置为false,上面两个参数都不生效 spring.datasource.hikari.cachePrepStmts = true #较新版本的 MySQL 支持服务器端准备好的语句,这可以提供实质性的性能提升 spring.datasource.hikari.useServerPrepStmts = true
hikari和jedis 连接池代码配置,仅供参考
public JedisPool redis(final String alias, final Map<String, Object> mappings) { // 连接池配置 final JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setTestOnBorrow(true); // 检查连接有效性 poolConfig.setTestOnReturn(true); // 检查returnObject有效性 poolConfig.setMaxTotal(300); // 可用连接最大数目 poolConfig.setMaxIdle(100); // 最大空闲连接数 poolConfig.setMinIdle(50); // 最小空闲连接数 poolConfig.setMaxWaitMillis(10000L); // 获取连接时的最大等待毫秒数 String host = "127.0.0.1"; int port = 6379; int index = 1;//redis 数据库分片索引 String password = "123456"; int timeout = 2000; // 连接池 final JedisPool jedisPool = new JedisPool(poolConfig,host, port, timeout, password,timeout); return jedisPool; }
/** 数据源静态工厂方法(MySQL) */ public static HikariDataSource mysql(final String alias, final Map<String, Object> mappings) { final HikariDataSource dataSource = new HikariDataSource(); // 连接池自定义名称,可缺省,多数据源需指定 dataSource.setPoolName("hikari-" + alias); // 可缺省,会自动填充,有意外情况 dataSource.setDriverClassName(mappings.get("driverClass").toString()); // 连接URL final String jdbcUrl = String.format(mappings.get("jdbcUrl").toString(), mappings.get("host"), mappings.get("port"), mappings.get("database")); dataSource.setJdbcUrl(jdbcUrl); // 认证用户 dataSource.setUsername(mappings.get("user").toString()); // 认证密钥 dataSource.setPassword(mappings.get("password").toString()); // 最小空闲连接数(默认10个) dataSource.setMinimumIdle((Integer) mappings.get("minPoolSize")); // 连接池中允许的最大连接数(默认10个,推荐:((core_count * 2) + effective_spindle_count)) dataSource.setMaximumPoolSize((Integer) mappings.get("maxPoolSize")); // 连接只读数据库时配置为true(保证安全) dataSource.setReadOnly(false); // 自动提交池中返回的连接,默认值为true,如果为false则需要手动提交事物 dataSource.setAutoCommit(true); // 分配连接的最大时长(毫秒,默认30秒),超时则SQLException dataSource.setConnectionTimeout(30000); // 连接允许闲置的最长时间(毫秒,默认10分),超时则被释放 dataSource.setIdleTimeout(600000); // 连接最长生命周期(毫秒,默认30分),超时则被释放(比DB超时时长少30秒,参考MySQL:wait_timeout参数[show variables like '%timeout%';]) dataSource.setMaxLifetime(1800000); // 数据库连接测试语句 dataSource.setConnectionTestQuery("SELECT 1"); return dataSource; }
druid基本配置,稍后完善:
public DruidDataSource getDruidDataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setUsername(username); druidDataSource.setPassword(passWord); druidDataSource.setUrl(jdbcUr); druidDataSource.setDriverClassName(driverClassName); druidDataSource.setMinIdle(1); druidDataSource.setMaxActive(5); // maxIdle是Druid为了方便DBCP用户迁移而增加的,maxIdle是一个混乱的概念。连接池只应该有maxPoolSize和minPoolSize, // druid只保留了maxActive和minIdle,分别相当于maxPoolSize和minPoolSize。 return druidDataSource; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战