持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
1.Jedis快速入门
Jedis的使用步骤很简单:
- 引入Jedis依赖
- 创建Jedis对象。这个对象用来设置Jedis的连接信息,如Jedis所在服务器IP地址和端口号,如果你的Redis设置了密码,也可以用过Jedis对象指定密码,当然,你也可以使用Jedis指定你要使用Redis中哪个库
- 使用Jedis。你如果熟悉Redis的基础命令,那么你会发现你是用的Jedis对象所调用的方法和Redis的命令是几乎一样的
- 释放资源
1.1 引入依赖
这是Jedis的官网,可以在这里找到最新的Jedis依赖。 首先创建一个Maven项目,然后在pom文件里面引入依赖。
<dependencies>
<!--jedis-->
<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>
<scope>test</scope>
</dependency>
</dependencies>
1.2 建立连接
我们在新创建的maven项目里面,测试使用Jedis。下面的代码分成了3个部分,分别是创建Jedis对象并设置相应参数,接着是测试能否使用Jedis操作Redis,最后是释放资源。
Jedis的使用方式很简单,建立连接和释放资源的步骤是固定的,大家参考下面的代码即可。关键在于如何往Redis里面插入数据和取出数据。
我们在Redis中使用String数据结构的时候,是这么写的
set name "老王"
get name
而是用Jedis,我们存取String数据结构数据的方式如下的testString方法所示。你会发现Jedis操作数据的方法和Redis命令名几乎一样。
public class JedisTest {
private Jedis jedis;
@BeforeEach
void setUp() {
//1.建立连接 redis所在服务器ip和端口号
jedis = new Jedis("192.168.182.135",6379);
//2.设置密码(如果你设置了密码)
jedis.auth("123321");
//3.选择库
jedis.select(0);
}
@Test
void testString() {
//存入数据
String result = jedis.set("name", "老王");
System.out.println("result = " + result);//result = OK
//获取数据
String name = jedis.get("name");
System.out.println("name = " + name);//name = 老王
}
@Test
void testHash() {
//插入hash数据
jedis.hset("user:1","name","Jack");
jedis.hset("user:1","age","21");
//获取
Map<String, String> map = jedis.hgetAll("user:1");
System.out.println(map);//{name=Jack, age=21}
}
@AfterEach
void testDown() {
if (jedis != null) {
jedis.close();
}
}
}
2. Jedis的连接池
我们为什么要使用Jedis的连接池呢?因为Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们需要使用Jedis连接池来代替Jedis直连的方式。
为了创建出连接池,继而从连接池里获取Jedis对象,我们创建了下面的工具类。
public class JedisConnectionFactory {
//定义连接池对象
private static final JedisPool jedisPool;
static {
//配置连接池
JedisPoolConfig poolConfig = new JedisPoolConfig();
//最大连接数
poolConfig.setMaxTotal(8);
//最大空闲连接
poolConfig.setMaxIdle(8);
//最小空闲连接,过段时间后一直没人连接,空闲连接释放
poolConfig.setMinIdle(0);
//如果没有连接,要不要等待,这里设置等待1000毫秒。如果值是-1那就会一直等待
poolConfig.setMaxWaitMillis(1000);
//创建连接池对象
jedisPool = new JedisPool(poolConfig,"192.168.182.135",6379,1000,"123321");
}
public static Jedis getJedis() {
return jedisPool.getResource();
}
}
测试使用,将标题一里的代码略微修改即可
@BeforeEach
void setUp() {
//1.建立连接 redis所在服务器ip和端口号
//jedis = new Jedis("192.168.182.135",6379);
jedis = JedisConnectionFactory.getJedis();
//2.设置密码(如果你设置了密码)
jedis.auth("123321");
//3.选择库
jedis.select(0);
}