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
View Code
复制代码

 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;
    }
复制代码

 

 

 
posted @   花开如梦  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示