目錄
一、快速上手
1.1、導入依賴
1.2、第一個示例
2.1、使用示例
2.2、封裝工具類
3.1、單純的JedisCluster
3.2、配合使用連接池
一、快速上手
1.1、導入依賴
jedis的github網址:https://github.com/xetorthio/jedis
maven倉庫信息:https://mvnrepository.com/artifact/redis.clients/jedis
本文所使用的的是最新的3.2.0版本,jedis的maven依賴xml如下:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </dependency>
1.2、第一個示例
測試的時候,使用本地安裝的redis,所以先將本地的redis服務器啟動

導入以來以后,可以創建一個單元測試類進行測試
package cn.ganlixin.redis;
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class JedisExample {
@Test
public void testFirstExample() {
// 連接redis
Jedis jedis = new Jedis("localhost", 6379);
// Jedis jedis = new Jedis("localhost"); // 默認6379端口
// string類型
jedis.set("name", "demo");
String name = jedis.get("name");
// list類型
jedis.lpush("myList", "hello");
jedis.rpush("myList", "world");
String lpopVal = jedis.lpop("myList");
String rpopVal = jedis.rpop("myList");
// set類型
jedis.sadd("mySet", "123");
jedis.sadd("mySet", "456");
jedis.sadd("mySet", "789");
jedis.srem("mySet", "789");
jedis.scard("mySet");
// zset類型
jedis.zadd("myZset", 99, "X");
jedis.zadd("myZset", 90, "Y");
jedis.zadd("myZset", 97, "Z");
Double zscore = jedis.zscore("myZset", "Z");
// 其他
jedis.incr("intKey");
jedis.incrBy("intKey", 5);
jedis.del("intKey");
// 觸發持久化
// jedis.save();
// jedis.bgsave()
// 關閉連接
jedis.close();
}
}
執行完畢后,可以通過redis客戶端工具,登錄到redis服務器查看存儲的值

二、使用Jedis連接池
2.1、使用示例
仍舊使用上面的maven依賴,示例代碼如下
package cn.ganlixin.redis;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisPoolExample {
@Test
public void testUsePool() {
// 配置連接池
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(20);
config.setMaxIdle(10);
config.setMinIdle(5);
// 創建連接池
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
Jedis jedis = jedisPool.getResource();
// 使用jedis進行操作
jedis.set("name", "otherNameVal");
// 用完之后,一定要手動關閉連接(歸還給連接池)
jedis.close();
}
}
2.2、封裝工具類
對於jedis連接池來說,只需要初始化一次即可,所以可以將其在工具類中實現,下面是我寫的示例:
package cn.ganlixin.redis.util;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* 描述: Jedis工具類(封裝了連接池)
*/
public class JedisUtils {
private static JedisPool jedisPool;
static {
// 配置連接池
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(5);
config.setMaxIdle(3);
config.setMinIdle(2);
// 創建連接池
jedisPool = new JedisPool(config, "localhost", 6379);
}
/**
* 獲取redis連接
*/
public static Jedis getJedis() {
return jedisPool.getResource();
}
}
配置項可以從配置文件中獲取,下面是使用示例:
package cn.ganlixin.redis;
import cn.ganlixin.redis.util.JedisUtils;
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class JedisPoolExample {
@Test
public void testJedisPoolUtil() {
Jedis jedis = JedisUtils.getJedis();
jedis.set("name123", "demo");
// 一定要關閉jedis連接
jedis.close();
}
}
使用Jedis連接池,最重要的就是:一定要手動關閉連接(釋放連接),否則會因為連接耗盡而導致操作阻塞。
三、使用Jedis連接Redis集群
要使用jedis操作Redis集群,就必須先有一個redis集群,redis集群的搭建方式,可以參考:Redis集群搭建
3.1、單純的JedisCluster
這里的單純,是指先簡單可以下JedisCluster的用法,沒有涉及到連接池相關的,后面會與連接池配合使用
package cn.ganlixin.redis;
import org.junit.Test;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import java.util.HashSet;
import java.util.Set;
/**
* Jedis操作Redis集群
*/
public class JedisClusterExample {
@Test
public void testExample() {
// 設置redis集群的節點信息
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.1.3", 6379));
nodes.add(new HostAndPort("192.168.1.4", 6379));
nodes.add(new HostAndPort("192.168.1.5", 6379));
// 創建jediscluster,可以理解為jedis對象
JedisCluster cluster = new JedisCluster(nodes);
// 和jedis的使用方式幾乎一樣
cluster.set("name", "nameDemo");
// 使用完畢后,不需要釋放連接
// cluster.close();
}
}
3.2、配合使用連接池
JedisCluster增加連接池,只需要配置一下連接池即可,示例如下:
package cn.ganlixin.redis;
import org.junit.Test;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
import java.util.HashSet;
import java.util.Set;
/**
* Jedis操作Redis集群
*/
public class JedisClusterExample {
@Test
public void clusterWithPool() {
// 設置redis集群的節點信息
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.1.3", 6379));
nodes.add(new HostAndPort("192.168.1.4", 6379));
nodes.add(new HostAndPort("192.168.1.5", 6379));
// 配置連接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(5);
jedisPoolConfig.setMaxIdle(3);
jedisPoolConfig.setMinIdle(2);
// 創建jediscluster,傳入節點列表和連接池配置
JedisCluster cluster = new JedisCluster(nodes, jedisPoolConfig);
// 和jedis的使用方式幾乎一樣
cluster.set("name", "nameDemo2121");
// 使用完畢后,不需要釋放連接
// cluster.close();
}
}
執行程序,在命令行中登錄到redis集群查看

