基于SpringBoot集成测试远程连接Redis服务的教程详解

 更新时间:2020年03月23日 10:48:29   作者:kris  
这篇文章主要介绍了基于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("\n测试append >>> "+jedis.append("name", " ^v^"));
 System.out.println("测试strlen >>> "+jedis.strlen("name"));
 System.out.println("测试get >>> "+jedis.get("name"));

 System.out.println("\n测试mset >>> "+jedis.mset(
  "username", "kris",
  "age", "18",
  "sex","男"));
 System.out.println("测试mget >>> "+jedis.mget("username", "age", "sex"));

 System.out.println("\n测试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("\n测试lpop >>> "+jedis.lpop("list01"));
 System.out.println("测试rpop >>> "+jedis.rpop("list01"));
 System.out.println("测试lrange >>> "+jedis.lrange("list01", 0, -1));

 System.out.println("\n测试lset >>> "+jedis.lset("list01", 0, "We"));
 System.out.println("测试lrange >>> "+jedis.lrange("list01", 0, -1));

 System.out.println("\n测试 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("\n测试srandmember >>> "+jedis.srandmember("names", 3));
 System.out.println("测试srandmember >>> "+jedis.srandmember("names", 3));

 System.out.println("\n测试spop >>> "+jedis.spop("names", 2));
 System.out.println("测试smembers >>> "+jedis.smembers("names"));

 System.out.println("\n测试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

总结

到此这篇关于基于SpringBoot集成测试远程连接的Redis服务的文章就介绍到这了,更多相关spring boot远程连接redis服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Security OAuth2实现使用JWT的示例代码

    Spring Security OAuth2实现使用JWT的示例代码

    这篇文章主要介绍了Spring Security OAuth2实现使用JWT的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • java List中相同的数据合并到一起

    java List中相同的数据合并到一起

    这篇文章主要介绍了java List中相同的数据合并到一起,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Spring中@Value使用详解及SPEL表达式

    Spring中@Value使用详解及SPEL表达式

    这篇文章主要介绍了Spring中@Value使用详解及SPEL表达式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java实现EasyCaptcha图形验证码的具体使用

    Java实现EasyCaptcha图形验证码的具体使用

    Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目,下面就跟随小编一起来了解一下
    2021-08-08
  • java mybatis框架实现多表关系查询功能

    java mybatis框架实现多表关系查询功能

    这篇文章主要介绍了java mybatis框架实现多表关系查询,基于Maven框架的整体设计 —— 一多一的关系,文中通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • Java详细讲解Math和Random类中有哪些常用方法

    Java详细讲解Math和Random类中有哪些常用方法

    Math类位于java.lang包中,包含很多用于科学计算的类方法,这些方法可以直接通过类名调用。Random类获取随机数,位于java.util包中,本篇带你了解它们的常用方法
    2022-05-05
  • Java 9中的"菱形"语法详解

    Java 9中的"菱形"语法详解

    Java 9 再次增强了“菱形”语法,它甚至允许在创建匿名内部类时使用菱形语法,Java 可根据上下文来推断匿名内部类中泛型的类型,下面程序示范了在匿名内部类中使用菱形语法,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • Spring AOP事务管理的示例详解

    Spring AOP事务管理的示例详解

    这篇文章将通过转账案例为大家详细介绍一下Spring AOP是如何进行事务管理的,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-06-06
  • 使用Spring Boot AOP处理方法的入参和返回值

    使用Spring Boot AOP处理方法的入参和返回值

    这篇文章主要介绍了使用Spring Boot AOP处理方法的入参和返回值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java计算代码段执行时间的详细代码

    java计算代码段执行时间的详细代码

    java里计算代码段执行时间可以有两种方法,一种是毫秒级别的计算,另一种是更精确的纳秒级别的计算,这篇文章主要介绍了java计算代码段执行时间,需要的朋友可以参考下
    2022-08-08

最新评论