在Redis官网中提供了各种语言的客户端,地址:https://redis.io/docs/clients/

java 写redis java写redis客户端_Test

 

java 写redis java写redis客户端_Test_02

其中标星的为推荐使用的Java客户端,包括:

  • Jedis和Lettuce:这两个主要是提供了Redis命令对应的API,方便我们操作Redis,而SpringDataRedis又对这两种做了抽象和封装,因此我们后期会直接以SpringDataRedis来学习。
  • Redisson:是在Redis基础上实现了分布式的可伸缩的java数据结构,例如Map、Queue等,而且支持跨进程的同步机制:Lock、Semaphore等待,比较适合用来实现特殊的功能需求。

一、Jedis

Jedis的官网地址: https://github.com/redis/jedis

快速入门

1、添加依赖:

<dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>3.7.0</version>
    </dependency>

    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>5.7.0</version>
    </dependency>

2、建立redis连接:

private Jedis jedis;

    @BeforeEach
    void setUp() {
        // 建立连接
        jedis = new Jedis("192.168.1.103",6379);
        // 设置密码
        /*jedis.auth("");*/
        // 选择库
        jedis.select(0);
    }

3、测试:

@Test
    void testString() {
        // 存入数据
        String result = jedis.set("name", "Kvno");
        System.out.println("result = " + result);
        // 获取数据
        String name = jedis.get("name");
        System.out.println("name = " + name);
    }

    @Test
    void testHash() {
        // 插入hash数据
        jedis.hset("hash:3","id","3");
        jedis.hset("hash:4", "id", "4");
        // 获取
        Map<String, String> map = jedis.hgetAll("hash:1");
        System.out.println(map);
    }

4、释放资源:

@AfterEach
    void tearDown() {
        //释放资源
        if (jedis != null) {
            jedis.close();
        }
    }

二、Jedis连接池

Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式。

建立连接池:

public class JedisPoolDemo {
    private static JedisPool jedisPool;
    // 配置连接池
    static {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        //最大连接
        poolConfig.setMaxTotal(8);
        //最大空闲连接
        poolConfig.setMaxIdle(8);
        //最小空闲连接
        poolConfig.setMinIdle(0);
        //最长等待时间,ms
        poolConfig.setMaxWaitMillis(200);

        // 创建连接池对象,参数:连接池配置、服务端ip、服务端端口、超时时间、(密码)
        jedisPool = new JedisPool(poolConfig, "192.168.1.103", 6379, 100);
    }

    //获取Jedis对象
    public static Jedis getJedis(){
        //将对象归还至连接池
        return jedisPool.getResource();
    }
}

Jedis连接池测试:

public class PoolTest {
    private Jedis jedis;

    @BeforeEach
    void setUp() {
        // 建立连接
        jedis = JedisPoolDemo.getJedis();
        // 选择库
        jedis.select(0);
    }

    @org.junit.jupiter.api.Test
    void testString() {
        // 存入数据
        String result = jedis.set("name", "PoolKvno");
        System.out.println("result = " + result);
        // 获取数据
        String name = jedis.get("name");
        System.out.println("name = " + name);
    }

    @org.junit.jupiter.api.Test
    void testHash() {
        // 插入hash数据
        jedis.hset("hash:5","id","5");
        // 获取
        Map<String, String> map = jedis.hgetAll("hash:1");
        System.out.println(map);
    }

    @AfterEach
    void tearDown() {
        //释放资源
        if (jedis != null) {
            jedis.close();
        }
    }
}