java操作redis之jedis
我们之前对Redis的学习都是在命令行窗口,那么如何使用Java来对Redis进行操作呢?对于Java连接Redis的开发工具有很多,这里先介绍通过Jedis实现对Redis的各种操作。(前提是你的redis已经配置了远程访问)
1.创建一个maven工程,并且添加以下依赖
<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>
2.创建JedisTest.java测试类
package org.example.test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;
import org.junit.jupiter.api.BeforeEach;
import java.util.Map;
public class JedisTest {
private Jedis jedis;
@BeforeEach
void setUp(){
// 建立连接
jedis = new Jedis("192.168.***.***", 6379);
// 设置密码
jedis.auth("******");
// 选择数据库
jedis.select(0);
}
//测试String
@Test
void testString(){
// 添加数据
String result = jedis.set("name", "minqilianghhahahah");
System.out.println(result);
// 获取数据
String data = jedis.mget(new String[]{"id","name"}).toString();
System.out.println(data);
}
//测试hash
@Test
void testHash(){
// 添加数据
jedis.hset("user", "name", "张三");
jedis.hset("user", "age", "23");
// 获取数据
String name = jedis.hget("user", "name");
Map<String, String> user = jedis.hgetAll("user");
System.out.println(name);
System.out.println(user);
}
//释放资源
@AfterEach
void tearDown(){
if(jedis != null){
jedis.close();
}
}
}
到这里Jedis如何连接redis以及常用操作已经了解了,其实这里的操作方法和原始的方法是一致的,降低了学习成本。但是还有一些不好的地方就是每次使用都要重新连接redis,使用完又要断开连接,那么可以使用连接池来解决这个问题。下面介绍连接池的使用。
3.使用连接池
-
创建连接工厂类,如下:
package org.example; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisConnectionFactory { private static final JedisPool jedisPool; static { // 配置链接池信息 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 设置最大连接数 jedisPoolConfig.setMaxTotal(8); // 设置最大空闲连接数 jedisPoolConfig.setMaxIdle(8); // 设置最小空闲连接数 jedisPoolConfig.setMinIdle(0); // 设置连接池的最大等待时间 jedisPoolConfig.setMaxWaitMillis(1000); // 创建连接池对象 jedisPool = new JedisPool(jedisPoolConfig,"192.168.***.***",6379,1000, "******"); } public static Jedis getJedis() { return jedisPool.getResource(); } }
-
测试类使用连接池
package org.example.test; import org.example.JedisConnectionFactory; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import redis.clients.jedis.Jedis; import org.junit.jupiter.api.BeforeEach; import java.util.Map; public class JedisTest { private Jedis jedis; // 通过连接池获取连接 @BeforeEach void setUp(){ // 建立连接 jedis = JedisConnectionFactory.getJedis(); // 选择数据库 jedis.select(0); } //测试String @Test void testString(){ // 添加数据 String result = jedis.set("name", "minqilianghhahahah"); System.out.println(result); // 获取数据 String data = jedis.mget(new String[]{"id","name"}).toString(); System.out.println(data); } //测试hash @Test void testHash(){ // 添加数据 jedis.hset("user", "name", "张三"); jedis.hset("user", "age", "23"); // 获取数据 String name = jedis.hget("user", "name"); Map<String, String> user = jedis.hgetAll("user"); System.out.println(name); System.out.println(user); } //释放资源 @AfterEach void tearDown(){ if(jedis != null){ jedis.close(); } } }