jedis入门

目录

一、Jedis

1.Jedis简介

2.导包

3.官方文档

4.常用API

5.基本操作

6.jedis连接池的使用

7.工具类的编写

8.简单的使用

9.JedisPoolConfig的配置参数

一、Jedis

1.Jedis简介

Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。 在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。

2.导包

3.官方文档

http://xetorthio.github.io/jedis/

4.常用API

jedis入门_第1张图片

5.基本操作

@Test
public void testJedisSingle(){
//1 设置ip地址和端口
Jedis jedis = new Jedis("localhost", 6379);
//2 设置数据
jedis.set("name", "itheima");
//3 获得数据
String name = jedis.get("name");
System.out.println(name);
//4 释放资源
jedis.close();
}

6.jedis连接池的使用

jedis连接资源的创建与销毁是很消耗程序性能,所以jedis为我们提供了jedis的池化技术,jedisPool在创建时初始化一些连接资源存储到连接池中,使用jedis连接资源时不需要创建,而是从连接池中获取一个资源进行redis的操作,使用完毕后,不需要销毁该jedis连接资源,而是将该资源归还给连接池,供其他请求使用。

7.工具类的编写

package com.itheima.utils;

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

public class JedisPoolUtils {
    ////被volatile修饰的变量不会被本地线程缓存,对该变量的读写都是直接操作共享内存。
    private static volatile JedisPool jedisPool;
    private JedisPoolUtils() {
    }
    //获得连接池对象
    public static JedisPool getJedisPoolInstance(){
        if(jedisPool==null){
            synchronized (JedisPoolUtils.class){
                if(jedisPool==null){
                    JedisPoolConfig config = new JedisPoolConfig();
                    config.setMaxActive(30);
                    config.setMaxIdle(10);
                    jedisPool=new JedisPool(config,"127.0.0.1",6379);
                }
            }
        }
        return jedisPool;
    }
    //归还连接
    public static void  release(JedisPool jedisPool,Jedis jedis){
        if(jedis!=null){
        jedisPool.returnResource(jedis);
        }
    }
}

8.简单的使用

 public static void main(String[] args) {
        JedisPool pool = JedisPoolUtils.getJedisPoolInstance();
        JedisPool pool1 = JedisPoolUtils.getJedisPoolInstance();
        System.out.println(pool==pool1);//true,为同一连接池
        //得到连接
        Jedis resource = pool.getResource();
        System.out.println(resource.get("balance"));
        JedisPoolUtils.release(pool,resource);
    }

9.JedisPoolConfig的配置参数

(1)maxActive:控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted。
(2)maxIdle:控制一个pool最多有多少个状态为idle(空闲)的jedis实例;
(3)whenExhaustedAction:表示当pool中的jedis实例都被allocated完时,pool要采取的操作;默认有三种。
(4)maxWait:表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛JedisConnectionException;
(5)testOnBorrow:获得一个jedis实例的时候是否检查连接可用性(ping());如果为true,则得到的jedis实例均是可用的;
(6)testOnReturn:return 一个jedis实例给pool时,是否检查连接可用性(ping());
(7)testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;
(8)timeBetweenEvictionRunsMillis:表示idle object evitor两次扫描之间要sleep的毫秒数;
(9)numTestsPerEvictionRun:表示idle object evitor每次扫描的最多的对象数;
(10)minEvictableIdleTimeMillis:表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;
(11)softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义;
(12)lifo:borrowObject返回对象时,是采用DEFAULT_LIFO(last in first out,即类似cache的最频繁使用队列),如果为False,则表示FIFO队列;
=======================================================================================================
其中JedisPoolConfig对一些参数的默认设置如下:

testWhileIdle=true
           minEvictableIdleTimeMills=60000
           timeBetweenEvictionRunsMillis=30000
           numTestsPerEvictionRun=-1

你可能感兴趣的:(Redis)