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

网友投稿 360 2022-12-11


基于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依赖

redis.clients

jedis

3.2.0

编写简易的单元测试程序

可使用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 http://>>> "+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 pNVEhjKGwy>>> 4

测试lrange >>> [We, love, redis, !]

Hash哈希

测试用例:

@Test

void HashTest() {

Map 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 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

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring注解实现自动装配过程解析
下一篇:JAVA后台转换成树结构数据返回给前端的实现方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~