数据库连接池的选择 | 实现

Posted 无生活不技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库连接池的选择 | 实现相关的知识,希望对你有一定的参考价值。

本文是数据库连接池的选择与实现系列第二篇,本文是基于上篇文章(),为了做一个通用一点的连接池,以同样的代码开发模式来实现对各种数据库的连接。

本篇还是利用Java语言简单实现高可用的Redis对象池,这里我没有从最底层开始造轮子,而是使用了Redis Java客户端本身自带的连接池工具类:

JedisPool,

JedisCluster...

它已经进行了很好的封装(实质上它们底层就是利用common-pool2中

GenericObjectPoolConfig, 

GenericObjectPool 

等类来实现的

这里,只是简单利用上篇文章同样的方式做了一下封装和实现。

数据库连接池的选择 | 实现(二)1.第一步,写默认配置类Interface

数据库连接池的选择 | 实现(二)


2.第二步,编写Redis连接池

RedisConnectionPool

数据库连接池的选择 | 实现(二)


类结构如下:主要就是构造方法,传入不同的参数核心就是调用JedisPool

数据库连接池的选择 | 实现(二)

 

当然针对环境我们这里还可以用同样的方式实现如:

RedisClusterConnPool : Redis 集群连接池

RedisShardedConnPool : Redis分片连接池

RedisSentinelConnPool:Redis哨兵连接池


这里用RedisClusterConnPool来举例,其他类似写法:

数据库连接池的选择 | 实现(二)


类结构如下:同样类中主要就是构造方法,传入不同的参数核心就是调用JedisCluster

数据库连接池的选择 | 实现(二)

 

3.第三步:接下来写一个demo,演示一下:

这里简单写入两条数据到列表中,然后从Redis中获取,并打印,这里使用的jedis版本为2.9.0

数据库连接池的选择 | 实现(二)


数据库连接池的选择 | 实现(二)


Demo类的结构如下

数据库连接池的选择 | 实现(二)运行打印结果如下:

 


总结:等这个系列写完会把整个系列demo放到GitHub中,可以自己重新实现或者参考一下demo,经过完善就可以放到生产环境中,但这并不代表,这样的实现方式效率和性能就是好的,所以最终的好坏,还是要根据自己环境亲自测验,自己动手实践完后,才知其中的优劣。

 

 


以上是关于数据库连接池的选择 | 实现的主要内容,如果未能解决你的问题,请参考以下文章

数据库连接池的Java连接池

Java - 数据库连接池的选择 Druid

连接池的基本原理? 以及使用连接池的好处?

从零开始学Java-数据库连接池的选择 Druid

如何查看连接池的使用情况

数据库连接池的选择 Druid