Jedis连接池

jedis是官方首选的java客户端开发包

Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。 

在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 

在企业中用的最多的就是Jedis,Jedis同样也是托管在github上,

地址:https://github.com/xetorthio/jedis。
下载jedis解压后得到jar包如下:java操作redis数据库API(Jedis)

 

jedis常用API

方法 解释
new Jedis(host, port) 创建jedis对象,参数host是redis服务器地址,参数port是redis服务端口
set(key,value) 设置字符串类型的数据
get(key) 获得字符串类型的数据
hset(key,field,value) 设置哈希类型的数据
hget(key,field) 获得哈希类型的数据
lpush(key,values) 设置列表类型的数据
lpop(key) 列表左面弹栈
rpop(key) 列表右面弹栈
del(key) 删除指定的key

 

jedis连接池的使用

jedis连接池的基本概念

jedis连接资源的创建与销毁是很消耗程序性能,所以jedis为我们提供了jedis的池化技术

jedisPool在创建时初始化一些连接资源存储到连接池中,使用jedis连接资源时不需要创建,

而是从连接池中获取一个资源进行redis的操作,使用完毕后,不需要销毁该jedis连接资源,

而是将该资源归还给连接池,供其他请求使用。

package com.baidu;

import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class jedisPool {
    @Test
    public void testJedisPool(){
        //1 获得连接池配置对象,设置配置项
        JedisPoolConfig config = new JedisPoolConfig();
        // 1.1 最大连接数
        config.setMaxTotal(30);

        //1.2 最大空闲连接数
        config.setMaxIdle(10);

        //获得连接池
        JedisPool jedisPool = new JedisPool(config,"localhost",6379);

        Jedis jedis=null;
        try {
            //3.获得核心对象
             jedis = jedisPool.getResource();
            //4.设置数据
            jedis.set("name","xinruyi");
            //5.获得数据
            String name = jedis.get("name");
            System.out.println(name);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(jedis!=null){
                jedis.close();
            }
        }

        //虚拟机关闭时,释放pool资源
        if(jedisPool!=null){
            jedisPool.close();
        }
    }
}

  

案例-编写jedis连接池工具类

/*JedisUtil*/

package com.baidu;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.ResourceBundle;
/*jedis工具类*/

public final class JedisUtil {
    private JedisUtil() {}
    private static JedisPool jedisPool;
    private static int maxtotal;
    private static int maxwaitmillis;
    private static String host;
    private static int port;

    /*读取jedis.properties配置文件*/
    static{
        ResourceBundle rb = ResourceBundle.getBundle("jedis");
        maxtotal = Integer.parseInt(rb.getString("maxtotal"));
        maxwaitmillis = Integer.parseInt(rb.getString("maxwaitmillis"));
        host = rb.getString("host");
        port = Integer.parseInt(rb.getString("port"));
    }

    /*创建连接池*/
    static{
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(maxtotal);
        jedisPoolConfig.setMaxWaitMillis(maxwaitmillis);
        jedisPool = new JedisPool(jedisPoolConfig,host,port);
    }

    /*获取jedis*/
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }

    /*关闭Jedis*/
    public static void close(Jedis jedis){
        if(jedis!=null){
            jedis.close();
        }
    }
}

  

配置文件

(0)

相关推荐

  • 基于Redis实现分布式锁

    我们知道分布式锁的特性是排他.避免死锁.高可用.分布式锁的实现可以通过数据库的乐观锁(通过版本号)或者悲观锁(通过for update).Redis的setnx()命令.Zookeeper(在某个持久 ...

  • 面试官:生成订单 30 分钟未支付,则自动取消,该怎么实现?

    在开发中,往往会遇到一些关于延时任务的需求. 例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务.那么这里就会产生一个问 ...

  • 基于golang实现的redis连接池

    基于golang实现的redis连接池 代码篇: package mainimport ( "fmt" "github.com/garyburd/redigo/redis ...

  • 从连接池到内存池

    注:内容微调,修改标题,让题文匹配. 如果将互联网应用比喻成冲浪的话, 可能需要先学会在"池"中游泳. 引子 AI赋能万物,老码农的伙伴们也曾经开发了一个基于图数据库的知识问答系统 ...

  • Mybatis数据源结构解析之连接池

    对于 ORM 框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对 MyBatis 框架的数据源结构进行详尽的分析,找出什么时候创建 Connection ,并且深入 ...

  • .NET连接池的问题详解

    NET 连接池救生员 防止可淹没应用程序的池溢出 William Vaughn 大多数 ADO.NET 数据提供程序使用连接池,以提高围绕 Microsoft 断开连接的 .NET 结构构建的应用程序 ...

  • python通过连接池连接redis,操作redis队列

    在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多.所以为了节省资源,减少多次连接损耗,连接池的作用 ...

  • springboot添加多数据源连接池并配置Mybatis

    转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9190226.html May 12, 2018  星期六,那是个晴天,天湛蓝湛蓝的非常干净,仿佛飘过一粒尘埃也 ...

  • SSM项目下Druid连接池的配置及数据源监控的使用

    一,连接池的配置 在pom.xml中添加,druid的maven信息 <dependency> <groupId>com.alibaba</groupId> < ...

  • 【调参实战】BN和Dropout对小模型有什么影响?全局池化相比全连接有什么劣势?

    大家好,欢迎来到专栏<调参实战>,虽然当前自动化调参研究越来越火,但那其实只是换了一些参数来调,对参数的理解和调试在机器学习相关任务中是最基本的素质,在这个专栏中我们会带领大家一步一步理解 ...

  • 配电箱(柜)与桥架连接的推荐做法

    为解决这一问题,配电箱(柜)与桥架连接处可以根据桥架尺寸,安装能保护电线电缆的连接件,不仅能保证电线电缆在安装和使用过程中的完整性及用电安全,还能实现桥架与配电箱严密牢靠的连接.下面来看一看配电箱(柜 ...