> 我們之前對Redis的學習都是在命令行視窗,那麼如何使用Java來對Redis進行操作呢?對於Java連接Redis的開發工具有很多,這裡先介紹通過Jedis實現對Redis的各種操作。(前提是你的redis已經配置了遠程訪問) ## 1.創建一個maven工程,並且添加以下依賴 ~~~xml ...
我們之前對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(); } } }