IDEA連接Redis


1、創建一個Maven項目

 

2、在src下的pom.xml文件里,添加相關包引用

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>com.otwb</groupId>
 8     <artifactId>redisLink</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10 
11     <dependencies>
12         <!--用於單元測試的包-->
13         <dependency>
14             <groupId>junit</groupId>
15             <artifactId>junit</artifactId>
16             <version>4.12</version>
17         </dependency>
18         <!--mysql數據庫的jdbc驅動包:用於連接mysql數據庫-->
19         <dependency>
20             <groupId>mysql</groupId>
21             <artifactId>mysql-connector-java</artifactId>
22             <version>8.0.18</version>
23         </dependency>
24         <!--redis數據庫的連接驅動包-->
25         <dependency>
26             <groupId>redis.clients</groupId>
27             <artifactId>jedis</artifactId>
28             <version>2.9.0</version>
29         </dependency>
30         <!--數據庫工具包:用於操作數據庫-->
31         <dependency>
32             <groupId>commons-dbutils</groupId>
33             <artifactId>commons-dbutils</artifactId>
34             <version>1.5</version>
35         </dependency>
36         <!--對象池驅動包:用於存放我們需要池化的對象,如創建redis數據庫連接池-->
37         <dependency>
38             <groupId>org.apache.commons</groupId>
39             <artifactId>commons-pool2</artifactId>
40             <version>2.5.0</version>
41         </dependency>
42         <!--c3p0數據庫連接池包-->
43         <dependency>
44             <groupId>c3p0</groupId>
45             <artifactId>c3p0</artifactId>
46             <version>0.9.1.2</version>
47         </dependency>
48     </dependencies>
49 
50 
51 </project>

 

3、創建redis連接池工具包

 1 package utils;
 2 
 3 import redis.clients.jedis.Jedis;
 4 import redis.clients.jedis.JedisPool;
 5 import redis.clients.jedis.JedisPoolConfig;
 6 
 7 public class RedisUtils {
 8     //服務器IP地址
 9     private static String ADDR = "43.109.234.69";
10     //端口
11     private static int PORT = 6379;
12     //連接超時的時間  
13     private static int TIMEOUT = 10000;
14     //密碼
15     private static String AUTH = "123";
16     //數據庫模式是16個數據庫(0~15),這里設置第一個為默認數據庫
17     public static final int DEFAULT_DATABASE = 0;
18     //連接實例的最大連接數
19     private static int MAX_ACTIVE = 1024;
20     //控制一個pool最多有多少個狀態為idle(空閑的)的jedis實例,默認值也是8。
21     private static int MAX_IDLE = 200;
22     //等待可用連接的最大時間,單位毫秒,默認值為-1,表示永不超時。如果超過等待時間,則直接拋出JedisConnectionException
23     private static int MAX_WAIT = 10000;
24     //在borrow一個jedis實例時,是否提前進行validate操作;如果為true,則得到的jedis實例均是可用的;
25     private static boolean TEST_ON_BORROW = true;
26     //創建一個redis數據庫連接池
27     private static JedisPool jedisPool = null;
28 
29     //初始化Redis連接池(靜態代碼塊)
30     static {
31         try {
32             //新建連接池的配置參數
33             JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
34             //指定連接實例的最大連接數
35             jedisPoolConfig.setMaxTotal(MAX_ACTIVE);
36             //指定一個pool最多有多少個狀態為idle(空閑的)的jedis實例
37             jedisPoolConfig.setMaxIdle(MAX_IDLE);
38             //指定等待可用連接的最大時間,單位毫秒
39             jedisPoolConfig.setMaxWaitMillis(MAX_WAIT);
40             //在borrow一個jedis實例時,是否提前進行validate操作
41             jedisPoolConfig.setTestOnBorrow(TEST_ON_BORROW);
42             //初始化Redis連接池
43             jedisPool = new JedisPool(jedisPoolConfig, ADDR, PORT, TIMEOUT,AUTH,DEFAULT_DATABASE);
44             //jedisPool = new JedisPool(jedisPoolConfig, ADDR, PORT);
45         } catch (Exception e) {
46             e.printStackTrace();
47         }
48     }
49 
50     //獲取Jedis實例
51     public synchronized static Jedis getJedis() {
52         try {
53             if (jedisPool != null) {
54                 Jedis jedis = jedisPool.getResource();
55                 System.out.println("redis--服務正在運行: "+jedis.ping());
56                 return jedis;
57             } else {
58                 return null;
59             }
60         } catch (Exception e) {
61             e.printStackTrace();
62             return null;
63         }
64     }
65 
66     //釋放資源
67     public static void returnResource(final Jedis jedis) {
68         if(jedis != null) {
69             jedisPool.returnResource(jedis);
70         }
71     }
72 }

 

4、在src——main——java下添加RedisLinkTest類,測試連接操作Redis數據庫

  1 import org.junit.Test;
  2 import redis.clients.jedis.Jedis;
  3 import utils.RedisUtils;
  4 
  5 import java.util.Iterator;
  6 import java.util.List;
  7 import java.util.Set;
  8 
  9 public class RedisLinkTest {
 10     //@Test表示這個方法是單元測試的方法
 11     //連接並添加String類型數據
 12     @Test
 13     public void fun1() {
 14         //直接連接redis數據庫
 15         Jedis jedis = new Jedis("43.109.234.69",6379);
 16         //設置連接密碼
 17         jedis.auth("123");
 18         //添加String類型數據
 19         jedis.set("field1","i am field1");
 20         //輸出添加的數據(根據鍵,輸出對應的值)
 21         System.out.println(jedis.get("field1"));
 22         //刪除String類型數據(根據鍵刪除)
 23         jedis.del("field1");
 24         //輸出數據,查看是否刪除成功
 25         System.out.println(jedis.get("field1"));
 26     }
 27 
 28     //連接並添加hash類型數據(我理解為給String類型的數據進行了分類,每個hash可以存儲2^32-1個鍵值對)
 29     @Test
 30     public void fun2(){
 31         //通過連接池方式連接redis數據庫
 32         Jedis jedis = RedisUtils.getJedis();
 33         //添加hash類型數據
 34         jedis.hset("hset1","name","張三");
 35         jedis.hset("hset1","age","22");
 36         jedis.hset("hset1","sex","男");
 37         //獲取數據
 38         List<String> hmget = jedis.hmget("hset1", "name","age","sex");
 39         //輸出
 40         System.out.println(hmget);
 41         //刪除
 42         jedis.hdel("hset1","name","sex");
 43         //刪除后再輸出,看看是否刪除成功
 44         System.out.println(jedis.hmget("hset1", "name","age","sex"));
 45         RedisUtils.returnResource(jedis);
 46     }
 47 
 48     //連接並添加List類型數據(隊列,按照插入順序排序,可以添加一個元素到列表的頭部(左邊),或者尾部(右邊))
 49     @Test
 50     public void fun3() {
 51         //通過連接池方式連接redis數據庫
 52         Jedis jedis = RedisUtils.getJedis();
 53         //添加List類型數據,lpush添加到列表頭部,即后添加的數據在最前面
 54         jedis.lpush("field2","aaa");
 55         jedis.lpush("field2","bbb");
 56         jedis.lpush("field2","ccc");
 57         //從索引1的位置獲取到索引6位置的值,因為超出了實際索引2,所以后面會繼續循環輸出
 58         List<String> field2 = jedis.lrange("field2", 0, 6);
 59         //輸出添加的鍵值對
 60         for(String item:field2){
 61             System.out.println(item);
 62         }
 63         RedisUtils.returnResource(jedis);
 64     }
 65 
 66     //連接並添加Set類型數據(一堆不重復值的組合)
 67     @Test
 68     public void fun4(){
 69         //通過連接池方式連接redis數據庫
 70         Jedis jedis = RedisUtils.getJedis();
 71         //添加Set類型數據
 72         jedis.sadd("name","zhangsan");
 73         jedis.sadd("name","lisi");
 74         jedis.sadd("name","lisi");  //同一個數據再次添加,會覆蓋上一次的
 75         jedis.sadd("age","16");
 76         jedis.sadd("sex","nan");
 77         jedis.sadd("address","china");
 78         //獲取Set類型數據
 79         Set<String> name = jedis.smembers("name");
 80         //輸出獲取到的Set類型數據(輸出的順序是無序的)
 81         System.out.println(name);
 82         System.out.println("\n");
 83         //獲取當前redis數據庫中,所有key,以Set集合的方式返回數據
 84         Set<String> set = jedis.keys("*");
 85         Iterator<String> iterator = set.iterator();
 86         while(iterator.hasNext()){
 87             System.out.println(iterator.next());
 88         }
 89         RedisUtils.returnResource(jedis);
 90     }
 91 
 92     //連接並添加ZSet類型數據(zset是set的升級版,它在set的基礎上增加了順序屬性score,這一屬性在添加修改元素的時候可以指定,每次指定后,zset會自動重新按新的值調整順序)
 93     @Test
 94     public void fun5(){
 95         //通過連接池方式連接redis數據庫
 96         Jedis jedis = RedisUtils.getJedis();
 97         //添加zset型數據
 98         jedis.zadd("field3",1,"hhh");
 99         jedis.zadd("field3",0,"jjj");
100         jedis.zadd("field3",3,"bbb");
101         //獲取set型數據
102         Set<String> field3 = jedis.zrangeByScore("field3", 0, 5);
103         //用迭代器循環輸出
104         Iterator<String> iterator = field3.iterator();
105         while(iterator.hasNext()){
106             System.out.println(iterator.next());
107         }
108         RedisUtils.returnResource(jedis);
109     }
110 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM