• 在Java中使用Jedis的测试案例


    本文主要考察在Java中使用Jedis的用法;

    1.导包 

    <!--  redis的依赖包  -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
    
        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>1.2</version>
        </dependency>
    
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.0</version>
        </dependency>
    
        <!-- 单元测试 -->
        <dependency>
            <groupId>JUnit</groupId>
            <artifactId>JUnit</artifactId>
            <version>4.12</version>
        </dependency>

    2. 写Redis连接的工具类RedisUtil

     1 package com.zdj.redis;
     2 
     3 import redis.clients.jedis.Jedis;
     4 import redis.clients.jedis.JedisPool;
     5 import redis.clients.jedis.JedisPoolConfig;
     6 
     7 /**
     8  * Created by Administrator on 2018/3/30.
     9  */
    10 public class RedisUtil {
    11 
    12     //Redis服务器IP
    13 //    private static String ADDR = "192.168.10.19";
    14     private static String ADDR = "127.0.0.1"; //   本地
    15 
    16     //Redis的端口号
    17     private static int PORT = 6379;
    18 
    19     //访问密码
    20     private static String AUTH = "123456";
    21 
    22     //可用连接实例的最大数目,默认值为8;
    23     //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
    24     private static int MAX_ACTIVE = 1024;
    25 
    26     //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
    27     private static int MAX_IDLE = 200;
    28 
    29     //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
    30     private static int MAX_WAIT = 10000;
    31 
    32     private static int TIMEOUT = 10000;
    33 
    34     //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
    35     private static boolean TEST_ON_BORROW = true;
    36 
    37 
    38     private static JedisPool jedisPool = null;
    39 
    40     /**
    41      * 初始化Redis连接池
    42      */
    43     static {
    44         try {
    45             JedisPoolConfig config = new JedisPoolConfig();
    46 //            config.setMaxActive(MAX_ACTIVE);--->maxActive 改成了MaxTotal()
    47             config.setMaxTotal(MAX_ACTIVE);
    48             config.setMaxIdle(MAX_IDLE);
    49 //            config.setMaxWait(MAX_WAIT);-----> setMaxWait() 改成了 setMaxWaitMillis()
    50             config.setMaxWaitMillis(MAX_WAIT);
    51             config.setTestOnBorrow(TEST_ON_BORROW);
    52             jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
    53 //            jedisPool=new JedisPool(config, "localhost", PORT, TIMEOUT,"123456",0);
    54         } catch (Exception e) {
    55             e.printStackTrace();
    56         }
    57     }
    58 
    59     /**
    60      * 获取jedis实例
    61      */
    62     public synchronized static Jedis getJedis(){
    63         try {
    64             if(jedisPool != null){// jedisPool={JedisPool@5551}
    65                 Jedis resource=jedisPool.getResource();
    66                 return resource;// resource={Jedis@5622}
    67             }else{
    68                 return null;
    69             }
    70         }catch (Exception e){
    71             e.printStackTrace();
    72             return null;
    73         }
    74     }
    75 
    76     /**
    77      * 释放jedis资源
    78      */
    79     public static void returnResource(final Jedis jedis){
    80         if(jedis!=null){
    81             jedisPool.returnResource(jedis);
    82 //            jedisPool.close();
    83         }
    84     }
    85 
    86 
    87 }

    3.  接下来写一个测试类

      1 package redisTest;
      2 
      3 import com.zdj.redis.RedisUtil;
      4 import org.junit.Before;
      5 import org.junit.Test;
      6 import redis.clients.jedis.Jedis;
      7 
      8 import java.util.HashMap;
      9 import java.util.Iterator;
     10 import java.util.List;
     11 import java.util.Map;
     12 
     13 /**
     14  * Created by Administrator on 2018/3/30.
     15  */
     16 public class TestRedis {
     17 
     18     private Jedis jedis;
     19 
     20     @Before
     21     public void setup(){
     22         jedis= RedisUtil.getJedis();
     23     }
     24 
     25     @Test
     26     public void testString(){
     27         jedis.set("name","zdj");
     28         System.out.println(jedis.get("name"));  //  zdj
     29 
     30         jedis.append("name"," is my sister");
     31         System.out.println(jedis.get("name")); //  zdj is my sister
     32 
     33         jedis.del("name");  //删除某个键
     34         System.out.println(jedis.get("name")); // null
     35         //设置多个键值对
     36         jedis.mset("name","guyu","age","12","qq","856789543");
     37         jedis.incr("age"); //进行加1操作
     38         System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq")); //guyu-13-856789543
     39 
     40     }
     41 
     42     /**
     43      * redis操作Map
     44      */
     45     @Test
     46     public void testMap() {
     47         //-----添加数据----------
     48         Map<String, String> map = new HashMap<String, String>();
     49         map.put("name", "guyu");
     50         map.put("age", "23");
     51         map.put("qq", "123456");
     52         jedis.hmset("user",map);
     53         //取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List
     54         //第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
     55         List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
     56         System.out.println(rsmap); // [guyu, 23, 123456]
     57 
     58         //删除map中的某个键值
     59         jedis.hdel("user","age");
     60         System.out.println(jedis.hmget("user", "age")); //  [null]  因为删除了,所以返回的是null
     61         System.out.println(jedis.hlen("user")); //  2    返回key为user的键中存放的值的个数2
     62         System.out.println(jedis.exists("user"));//是否存在key为user的记录 返回true
     63         System.out.println(jedis.hkeys("user"));//   [name, qq]    返回map对象中的所有key
     64         System.out.println(jedis.hvals("user"));// [guyu, 123456]  返回map对象中的所有value
     65 
     66         Iterator<String> iter=jedis.hkeys("user").iterator();
     67         while (iter.hasNext()){
     68             String key = iter.next();
     69             System.out.println(key+":"+jedis.hmget("user",key));
     70             /**
     71                 name:[guyu]
     72                 qq:[123456]
     73              */
     74         }
     75     }
     76 
     77     /**
     78      * jedis操作List
     79      */
     80     @Test
     81     public void testList(){
     82         //开始前,先移除所有的内容
     83         jedis.del("java framework");
     84         System.out.println(jedis.lrange("java framework",0,-1));
     85         //先向key java framework中存放三条数据
     86         jedis.lpush("java framework","spring");
     87         jedis.lpush("java framework","struts");
     88         jedis.lpush("java framework","hibernate");
     89         //再取出所有数据jedis.lrange是按范围取出,
     90         // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
     91         System.out.println(jedis.lrange("java framework",0,-1));
     92 
     93         jedis.del("java framework");
     94         jedis.rpush("java framework","spring");
     95         jedis.rpush("java framework","struts");
     96         jedis.rpush("java framework","hibernate");
     97         System.out.println(jedis.lrange("java framework",0,-1));
     98     }
     99 
    100     /**
    101      * jedis操作Set
    102      */
    103     @Test
    104     public void testSet(){
    105         //添加
    106         jedis.sadd("user","guyu");
    107         jedis.sadd("user","guyu1");
    108         jedis.sadd("user","pl");
    109         jedis.sadd("user","guyu2015");
    110         jedis.sadd("user","who");
    111         //移除noname
    112         jedis.srem("user","who");
    113         System.out.println(jedis.smembers("user"));//获取所有加入的value
    114         System.out.println(jedis.sismember("user", "who"));//判断 who 是否是user集合的元素
    115         System.out.println(jedis.srandmember("user"));
    116         System.out.println(jedis.scard("user"));//返回集合的元素个数
    117     }
    118 
    119     @Test
    120     public void test() throws InterruptedException {
    121         //jedis 排序
    122         //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)
    123         jedis.del("a");//先清除数据,再加入数据进行测试
    124         jedis.rpush("a", "1");
    125         jedis.lpush("a","6");
    126         jedis.lpush("a","3");
    127         jedis.lpush("a","9");
    128         System.out.println(jedis.lrange("a",0,-1));// [9, 3, 6, 1]
    129         System.out.println(jedis.sort("a")); //[1, 3, 6, 9]  //输入排序后结果
    130         System.out.println(jedis.lrange("a",0,-1));
    131     }
    132 
    133     @Test
    134     public void testRedisPool() {
    135         RedisUtil.getJedis().set("newname", "中文测试");
    136         System.out.println(RedisUtil.getJedis().get("newname"));
    137     }
    138 
    139 
    140 
    141 
    142 }
  • 相关阅读:
    【HDOJ】2774 Shuffle
    【POJ】2170 Lattice Animals
    【POJ】1084 Square Destroyer
    【POJ】3523 The Morning after Halloween
    【POJ】3134 Power Calculus
    【Latex】如何在Latex中插入伪代码 —— clrscode3e
    【HDOJ】4801 Pocket Cube 的几种解法和优化
    【HDOJ】4080 Stammering Aliens
    【HDOJ】1800 Flying to the Mars
    SQL语法
  • 原文地址:https://www.cnblogs.com/zdj-/p/8677314.html
Copyright © 2020-2023  润新知