IDEA连接Redis

1、创建一个Maven项目

IDEA连接Redis_第1张图片

IDEA连接Redis_第2张图片

IDEA连接Redis_第3张图片

 

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

 1 
 2  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     4.0.0
 6 
 7     com.otwb
 8     redisLink
 9     1.0-SNAPSHOT
10 
11     
12         
13         
14             junit
15             junit
16             4.12
17         
18         
19         
20             mysql
21             mysql-connector-java
22             8.0.18
23         
24         
25         
26             redis.clients
27             jedis
28             2.9.0
29         
30         
31         
32             commons-dbutils
33             commons-dbutils
34             1.5
35         
36         
37         
38             org.apache.commons
39             commons-pool2
40             2.5.0
41         
42         
43         
44             c3p0
45             c3p0
46             0.9.1.2
47         
48     
49 
50 
51 

IDEA连接Redis_第4张图片

 

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 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 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 name = jedis.smembers("name");
 80         //输出获取到的Set类型数据(输出的顺序是无序的)
 81         System.out.println(name);
 82         System.out.println("\n");
 83         //获取当前redis数据库中,所有key,以Set集合的方式返回数据
 84         Set set = jedis.keys("*");
 85         Iterator 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 field3 = jedis.zrangeByScore("field3", 0, 5);
103         //用迭代器循环输出
104         Iterator iterator = field3.iterator();
105         while(iterator.hasNext()){
106             System.out.println(iterator.next());
107         }
108         RedisUtils.returnResource(jedis);
109     }
110 }

IDEA连接Redis_第5张图片

IDEA连接Redis_第6张图片

IDEA连接Redis_第7张图片

IDEA连接Redis_第8张图片

IDEA连接Redis_第9张图片

IDEA连接Redis_第10张图片

 

你可能感兴趣的:(IDEA连接Redis)