Redis】redis连接池

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis】redis连接池

一、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数据库,和其他数据库相似,建立连接池可以使资源重用,更快响应系统,建立统一的连接管理,避免数据库连接泄露。






相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
NoSQL Java 关系型数据库
mysql和redis连接池
mysql和redis连接池
60 0
|
6月前
|
关系型数据库 MySQL Java
mysql连接池和redis连接池的实现
mysql连接池和redis连接池的实现
86 0
|
3月前
|
缓存 弹性计算 NoSQL
【Azure Redis 缓存 Azure Cache For Redis】Redis连接池
【Azure Redis 缓存 Azure Cache For Redis】Redis连接池
|
5月前
|
NoSQL Java Redis
redis连接池参数
如果系统启动完马上就会有很多的请求过来,那么可以给redis连接池做预热,比如快速的创建一些redis连接,执行简单命令,类似ping(),快速的将连接池里的空闲连接提升到minldle的数量。
152 0
|
6月前
|
关系型数据库 MySQL Java
mysql连接池和redis连接池
mysql连接池和redis连接池
192 0
|
6月前
|
NoSQL Java 数据库连接
springboot整合Redis中连接池jedis与lettuce的对比和实现
springboot整合Redis中连接池jedis与lettuce的对比和实现
984 0
|
4月前
|
Java Redis 数据安全/隐私保护
Redis14----Redis的java客户端-jedis的连接池,jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,最好用jedis连接池代替jedis,配置端口,密码
Redis14----Redis的java客户端-jedis的连接池,jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,最好用jedis连接池代替jedis,配置端口,密码
|
5月前
|
存储 NoSQL Java
Redis系列学习文章分享---第二篇(Redis快速入门之Java客户端--Jedis+连接池+SpringDataRedis+RedisTemplate+RedisSerializer+Hash)
Redis系列学习文章分享---第二篇(Redis快速入门之Java客户端--Jedis+连接池+SpringDataRedis+RedisTemplate+RedisSerializer+Hash)
263 0
|
NoSQL 网络协议 Java
Redis在CentOS 6.8中的安装方法,JAVA初级使用Redis连接池
Redis在CentOS 6.8中的安装方法,JAVA初级使用Redis连接池
|
6月前
|
监控 NoSQL 安全
Redis进阶-JedisPool参数优化 & 如何合理估算核心参数 & redis连接池预热
Redis进阶-JedisPool参数优化 & 如何合理估算核心参数 & redis连接池预热
303 0
下一篇
无影云桌面