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 環境中執行測試用例,結果如下。
現在,我們就在 Java 中利用 Jedit 客戶端建立和 redis 的連線並且可以執行操作。對應的程式碼釋出到了 GitHub 中
原文發表在簡書中,原始連結