zoukankan      html  css  js  c++  java
  • 基于SpringBoot集成测试远程连接的Redis服务

    前期准备

    Linux虚拟机或者租用的云服务器:sudo安装redis,或者docker加载redis镜像。后者需要使用docker启用redis容器。

    配置好redis.conf文件。注意:一定要注释 # bind 127.0.0.1 其他详细配置可参考我另一篇文章,不过能想到集成测试redis,配置文件应该已经配置好了。

    /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT 开放6379端口

    初始化SpringBoot项目

    • 使用Spring Initializr 初始化一个SpringBoot项目,可以勾选NoSQL下这两项,或者后面自行添加pom依赖。(当然也可以初始化一个maven项目来测试)

    在这里插入图片描述

    • 添加jedis依赖

      <!--导入jedis依赖-->
      <dependency>
          <groupId>redis.clients</groupId>
          <artifactId>jedis</artifactId>
          <version>3.2.0</version>
      </dependency>
      
    • 编写简易的单元测试程序

      可使用ifconfig 或者 ip addr 查询服务器的ip地址

      /**
      * host: 虚拟机或远程服务器的ip地址
      * port: redis.conf中配置的服务端口号
      */
      @Test
      void TestPing() {
          Jedis jedis = new Jedis("192.168.137.132",6379);
          System.out.println("TestPing >>>>>>>>>>>>> "+jedis.ping());
      }
      

      测试结果:

    在这里插入图片描述

    测试五大基本数据类型

    测试过程中,有些数据防止重复插入,部分测试用例使用了del命令。

    • 五大基本数据类型:字符串,列表,哈希,集合,有序集合

    • 每次单元测试都需进行远程连接,故做以下处理:

      @SpringBootTest
      class JedisDemoApplicationTests {
          
          // 此处配置连接
          Jedis jedis = new Jedis("192.168.137.132",6379);
      
          @Test
          void contextLoads() {
          }
          
          // 此处进行单元测试
      }
      

    Key键

    测试用例:

    @Test
    void KeyTest() {
        System.out.println(jedis.keys("*"));
        System.out.println(jedis.keys("*").getClass());
    }
    

    测试结果:

    [list01, customer, set01, username]
    class java.util.HashSet
    

    String字符串

    测试用例:

    @Test
    void StringTest() {
        System.out.println("测试set >>> "+jedis.set("name", "kris"));
        System.out.println("测试get >>> "+jedis.get("name"));
        System.out.println(jedis.get("name").getClass());
    
        System.out.println("
    测试append >>> "+jedis.append("name", " ^v^"));
        System.out.println("测试strlen >>> "+jedis.strlen("name"));
        System.out.println("测试get >>> "+jedis.get("name"));
    
        System.out.println("
    测试mset >>> "+jedis.mset(
            "username", "kris",
            "age", "18",
            "sex","男"));
        System.out.println("测试mget >>> "+jedis.mget("username", "age", "sex"));
    
        System.out.println("
    测试incr >>> "+jedis.incr("age"));
        System.out.println("测试incrBy >>> "+jedis.incrBy("age",3));
        System.out.println("测试decr >>> "+jedis.decr("age"));
        System.out.println("测试decrBy >>> "+jedis.decrBy("age", 3));
    }
    

    测试结果:

    测试set >>> OK
    测试get >>> kris
    class java.lang.String
    
    测试append >>> 8
    测试strlen >>> 8
    测试get >>> kris ^v^
    
    测试mset >>> OK
    测试mget >>> [kris, 18, 男]
    
    测试incr >>> 19
    测试incrBy >>> 22
    测试decr >>> 21
    测试decrBy >>> 18
    

    List列表

    测试用例:

    @Test
    void ListTest() {
        System.out.println("测试rpush >>> "+jedis.rpush("list01", "I", "love", "redis", "!"));
        System.out.println("测试lpush >>> "+jedis.lpush("list01", "hello"));
        System.out.println("测试lrange >>> "+jedis.lrange("list01", 0, -1));
        System.out.println(jedis.lrange("list01", 0, -1).getClass());
    
        System.out.println("
    测试lpop >>> "+jedis.lpop("list01"));
        System.out.println("测试rpop >>> "+jedis.rpop("list01"));
        System.out.println("测试lrange >>> "+jedis.lrange("list01", 0, -1));
    
        System.out.println("
    测试lset >>> "+jedis.lset("list01", 0, "We"));
        System.out.println("测试lrange >>> "+jedis.lrange("list01", 0, -1));
    
        System.out.println("
    测试 linsert >>> "+jedis.linsert("list01", ListPosition.AFTER,
                                                             "redis", "!"));
        System.out.println("测试lrange >>> "+jedis.lrange("list01", 0, -1));
    
        jedis.del("list01");
    }
    

    测试结果:

    测试rpush >>> 4
    测试lpush >>> 5
    测试lrange >>> [hello, I, love, redis, !]
    class java.util.ArrayList
    
    测试lpop >>> hello
    测试rpop >>> !
    测试lrange >>> [I, love, redis]
    
    测试lset >>> OK
    测试lrange >>> [We, love, redis]
    
    测试 linsert >>> 4
    测试lrange >>> [We, love, redis, !]
    

    Hash哈希

    测试用例:

    @Test
    void HashTest() {
        Map<String, String> customer = new HashMap<>();
        customer.put("username", "kris");
        customer.put("password", "123456");
        customer.put("email", "kris@163.com");
    
        System.out.println("测试hset >>> "+jedis.hset("customer", customer));
        System.out.println("测试hget >>> "+jedis.hget("customer", "email"));
        System.out.println("测试getAll >>> "+jedis.hgetAll("customer"));
        System.out.println(jedis.hgetAll("customer").getClass());
    }
    

    测试结果:

    测试hset >>> 0
    测试hget >>> kris@163.com
    测试getAll >>> {name=kris, email=kris@163.com, password=123456, username=kris}
    class java.util.HashMap
    

    Set集合

    测试用例:

    @Test
    void SetTest() {
        System.out.println("测试sadd >>> "+jedis.sadd("names", "louis", "kris", "Jerry", "Jackson"));
        System.out.println("测试smembers >>> "+jedis.smembers("names"));
        System.out.println("测试scard >>> "+jedis.scard("names"));
        System.out.println(jedis.smembers("names").getClass());
    
        System.out.println("
    测试srandmember >>> "+jedis.srandmember("names", 3));
        System.out.println("测试srandmember >>> "+jedis.srandmember("names", 3));
    
        System.out.println("
    测试spop >>> "+jedis.spop("names", 2));
        System.out.println("测试smembers >>> "+jedis.smembers("names"));
    
        System.out.println("
    测试sadd >>> "+jedis.sadd("names0", "Jack", "louis", "kris"));
        System.out.println("测试sunion >>> "+jedis.sunion("names", "names0"));
        System.out.println("测试sdiff >>> "+jedis.sdiff("names", "names0"));
        System.out.println("测试sinter >>> "+jedis.sinter("names", "names0"));
        System.out.println("测试smembers >>> "+jedis.smembers("names"));
        System.out.println("测试smembers >>> "+jedis.smembers("names0"));
    
        jedis.del("names", "names0");
    }
    

    测试结果:

    测试sadd >>> 4
    测试smembers >>> [kris, Jerry, Jackson, louis]
    测试scard >>> 4
    class redis.clients.jedis.BinaryJedis$SetFromList
    
    测试srandmember >>> [kris, Jerry, Jackson]
    测试srandmember >>> [Jerry, louis, Jackson]
    
    测试spop >>> [Jerry, kris]
    测试smembers >>> [Jackson, louis]
    
    测试sadd >>> 3
    测试sunion >>> [Jack, kris, louis, Jackson]
    测试sdiff >>> [Jackson]
    测试sinter >>> [louis]
    测试smembers >>> [Jackson, louis]
    测试smembers >>> [kris, Jack, louis]
    

    ZSet有序集合

    测试用例:

    @Test
    void SortSetTest() {
        Map<String, Double> score = new HashMap<>();
        score.put("钻石", 1000.0);
        score.put("王者", 2000.0);  // 无序
        score.put("星耀", 1500.0);
        score.put("荣耀", 2500.0);
    
        System.out.println("测试zadd >>> "+jedis.zadd("score", score));
        System.out.println("测试zrangeByScore >>> "+jedis.zrangeByScore("score", 1500,2500));
        System.out.println("测试zrange >>> "+jedis.zrange("score", 0,-1));
        System.out.println("测试zrevrange >>> "+jedis.zrevrange("score", 0,-1));
        System.out.println(jedis.smembers("names").getClass());
        
        jedis.del("score");
    }
    

    测试结果:

    测试zadd >>> 4
    测试zrangeByScore >>> [星耀, 王者, 荣耀]
    测试zrange >>> [钻石, 星耀, 王者, 荣耀]
    测试zrevrange >>> [荣耀, 王者, 星耀, 钻石]
    class redis.clients.jedis.BinaryJedis$SetFromList
    
  • 相关阅读:
    几道算法题及学java心得
    css入门
    关于 移动端整屏切换专题 效果的思考
    css3实现卡牌旋转与物体发光效果
    九方格抽奖插件
    绑定弹窗事件最好的方法,原生JS和JQuery方法
    整屏滚动效果 jquery.fullPage.js插件+CSS3实现
    自定义 页面滚动条
    有趣的HTML5 CSS3效果
    CSS3 过渡与动画
  • 原文地址:https://www.cnblogs.com/louis6575/p/12547281.html
Copyright © 2011-2022 走看看