一、java工程连接redis数据库:
本文不再赘述,为各位读者推荐博客:
https://blog.csdn.net/it_0101/article/details/77772625
二、redis连接池
1、为什么使用redis连接池?
首先Redis也是一种数据库,它基于C/S模式,因此如果需要使用必须建立连接,稍微熟悉网络的人应该都清楚地知道为什么需要建立连接,C/S模式本身就是一种远程通信的交互模式,因此Redis服务器可以单独作为一个数据库服务器来独立存在。假设Redis服务器与客户端分处在异地,虽然基于内存的Redis数据库有着超高的性能,但是底层的网络通信却占用了一次数据请求的大量时间,因为每次数据交互都需要先建立连接,假设一次数据交互总共用时30ms,超高性能的Redis数据库处理数据所花的时间可能不到1ms,也即是说前期的连接占用了29ms,连接池则可以实现在客户端建立多个链接并且不释放,当需要使用连接的时候通过一定的算法获取已经建立的连接,使用完了以后则还给连接池,这就免去了数据库连接所占用的时间。
针对同“一个”数据库可以建立多个连接,Jedis从JedisPool中获取的仅仅是一个连接,至于多个连接到达单进程单线程的Redis之后怎么处理则是另外一回事(采用多路IO复用)。
推荐阅读:
https://blog.csdn.net/baidu_24256693/article/details/44928681
2、如何建立连接池?
我们在项目中可能会有多个地方需要操作redis数据库,如果每操作一次redis数据库就写一次创建连接池,获取资源的代码,那代码的复用性和可读性就太低了,所以,大多数情况下,我们把获取资源的操作写在工具类中。
代码如下,供读者参考:
1)新建properties文件,将redis连接池的配置属性写在配置文件中
redis.maxIdle= 8 // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。 最大闲置个数 redis.minIdle= 3 // 最小闲置个数 redis.maxTotal= 100 // 最大连接数 redis.url= 192.168.137.3 // redis IP地址 redis.port = 6379 // 端口号
2)新建工具类
public class JedisPoolUtils { private static JedisPool pool = null; static{ //加载配置文件 InputStream in = JedisPoolUtils.class.getClassLoader().getResourceAsStream("redis.properties"); Properties pro = new Properties(); try { pro.load(in); } catch (IOException e) { e.printStackTrace(); } //获得连接池对象 JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxIdle(Integer.parseInt(pro.get("redis.maxIdle").toString()));//最大闲置个数 poolConfig.setMinIdle(Integer.parseInt(pro.get("redis.minIdle").toString()));//最小闲置个数 poolConfig.setMaxTotal(Integer.parseInt(pro.get("redis.maxTotal").toString()));//最大连接数 pool = new JedisPool(poolConfig,pro.getProperty("redis.url") , Integer.parseInt(pro.get("redis.port").toString())); } //获得jedis资源的方法 public static Jedis getJedis(){ return pool.getResource(); } public static void main(String[] args) { Jedis jedis = getJedis(); System.out.println(jedis.get("xxx")); } }
除此之外,我们还可以配置redis的过期时间,等待可用连接的最大时间等。
推荐阅读:点击打开链接
三、总结
redis是一种NoSQL数据库,和其他数据库相似,建立连接池可以使资源重用,更快响应系统,建立统一的连接管理,避免数据库连接泄露。