在 Java 中使用 redis

redis 支持不少语言的客户端。在官方网站上有支持的全部的 redis 客户端列表java

由于平时使用 java 做为开发语言,因此这里描述一下如何经过 java 来链接和操做 redis 服务器。在官方文档中, Java 推荐的 redis 客户端是 Jedis ,这里咱们也用这个客户端对 redis 服务器进行操做。git


引入依赖

首先咱们创建一个 maven 工程,在工程的 pom.xml 文件中加入 Jedis 的依赖引用。为了方便测试,还加入了 Junit 依赖。文件内容以下。github

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.x9710.common</groupId>
<artifactId>redis-util</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
</dependencies>
</project>
复制代码

建立链接类

创建 redis 链接类 com.x9710.common.redis.RedisConnection 。内容以下 package com.x9710.common.redis;redis

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

public class RedisConnection {
   /**
   * redis 链接池配置信息
   */
  private JedisPoolConfig jedisPoolConfig;
   /**
   * redis 服务器地址
   */
  private String ip;

  /**
   * redis 服务器端口
   */
  private Integer port;

  /**
   * redis 服务器密码
   */
  private String pwd;

   /**
   * redis 服务器链接超时时间
   */
  private Integer timeOut;

   /**
   * redis 链接客户端名称
   */
  private String clientName = null;

  private JedisPool jedisPool;

   public void setJedisPoolConfig(JedisPoolConfig jedisPoolConfig) {
     this.jedisPoolConfig = jedisPoolConfig;
  }

  public void setIp(String ip) {
    this.ip = ip;
  }

  public void setPort(Integer port) {
    this.port = port;
  }

  public void setPwd(String pwd) {
    this.pwd = pwd;
  }

public void setTimeOut(Integer timeOut) {
    this.timeOut = timeOut;
}

public void setClientName(String clientName) {
    this.clientName = clientName;
}

private void buildConnection() {
    if (jedisPool == null) {
        if (jedisPoolConfig == null) {
            jedisPool = new JedisPool(new JedisPoolConfig(), ip, port, timeOut, pwd, 0, clientName);
        } else {
            jedisPool = new JedisPool(jedisPoolConfig, ip, port, timeOut, pwd, 0, clientName);
        }
    }
}

public Jedis getJedis() {
    buildConnection();
    if (jedisPool != null) {
        return jedisPool.getResource();
    }
    return null;
}
复制代码

}apache


编写测试

用一个测试类 com.x9710.common.redis.test.RedisConnectionTest 来测试 rdis 链接功能.服务器

package com.x9710.common.redis.test;

import com.x9710.common.redis.RedisConnection;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPoolConfig;

public class RedisConnectionTest {
private RedisConnection redisConnection;

@Before
public void before() {
    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    //设置 redis 链接池最大链接数量
    jedisPoolConfig.setMaxTotal(50);
    //设置 redis 链接池最大空闲链接数量
    jedisPoolConfig.setMaxIdle(10);
    //设置 redis 链接池最小空闲链接数量
    jedisPoolConfig.setMinIdle(1);
    redisConnection = new RedisConnection();
    redisConnection.setIp("10.110.2.56");
    redisConnection.setPort(52981);
    redisConnection.setPwd("hhSbcpotThgWdnxJNhrzwstSP20DvYOldkjf");
    redisConnection.setClientName(Thread.currentThread().getName());
    redisConnection.setTimeOut(600);
    redisConnection.setJedisPoolConfig(jedisPoolConfig);
}

@Test
public void testPutGet() {
    Jedis jedis = redisConnection.getJedis();
    try {
        jedis.select(1);
        jedis.set("name","grace");
        Assert.assertTrue("grace".equals(jedis.get("name")));
    } finally {
        if (jedis != null) {
            jedis.close();
        }
    }
}
}
复制代码

在 ide 环境中执行测试用例,结果以下。 maven

测试用例执行结果

如今,咱们就在 Java 中利用 Jedit 客户端创建和 redis 的链接而且能够执行操做。对应的代码发布到了 GitHubide

原文发表在简书中,原始连接测试

相关文章
相关标签/搜索