在 Java 中使用 redis

redis 支持很多语言的客户端。在官方网站上有支持的所有的 [redis 客户端列表]。

因为平时使用 java 作为开发语言,所以这里描述一下如何通过 java 来连接和操作 redis 服务器。在官方文档中, Java 推荐的 redis 客户端是 Jedis ,这里我们也用这个客户端对 redis 服务器进行操作。


引入依赖

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

<?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;

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;
}

}


编写测试

用一个测试类 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 环境中执行测试用例,结果如下。

image

现在,我们就在 Java 中利用 Jedit 客户端建立和 redis 的连接并且可以执行操作。对应的代码发布到了 GitHub 中

同时需要更多java相关资料以及面试心得和视频资料的,欢迎加QQ群:810589193
免费获取Java工程化、高性能及分布式、高性能、高架构、性能调优、Spring、MyBatis、Netty源码分析等多个知识点高级进阶干货的直播免费学习权限及相关视频资料,还有spring和虚拟机等书籍扫描版

猜你喜欢

转载自blog.csdn.net/weixin_44266509/article/details/89333526