基于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服务内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Spring boot集成redis lettuce代码实例

    spring boot框架中已经集成了redis,在1.x.x的版本时默认使用的jedis客户端,现在是2.x.x版本默认使用的lettuce客户端 引入依赖 <!-- spring boot redis 缓存引入 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactI

  • springboot集成redis实现简单秒杀系统

    本文实例为大家分享了springboot集成redis实现简单秒杀系统的具体代码,供大家参考,具体内容如下 项目是有地址的,我会放到文章的最后面 1. 直接service,我们会介绍两种秒杀模式 public interface GoodsService { /** * 通过lua脚本实现的秒杀 * @param skuCode 商品编码 * @param buyNum 购买数量 * @return 购买数量 */ Long flashSellByLuaScript(String skuCode

  • SpringBoot 整合 Lettuce Redis的实现方法

    SpringBoot 是为了简化 Spring 应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程 Spring Boot 除了支持常见的ORM框架外,更是对常用的中间件提供了非常好封装,随着Spring Boot2.x的到来,支持的组件越来越丰富,也越来越成熟,其中对Redis的支持不仅仅是丰富了它的API,更是替换掉底层Jedis的依赖,取而代之换成了Le

  • SpringBoot使用Redisson实现分布式锁(秒杀系统)

    前面讲完了Redis的分布式锁的实现,接下来讲Redisson的分布式锁的实现,一般提及到Redis的分布式锁我们更多的使用的是Redisson的分布式锁,Redis的官方也是建议我们这样去做的.Redisson点我可以直接跳转到Redisson的官方文档. 1.1.引入Maven依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter&l

  • Springboot2.X集成redis集群(Lettuce)连接的方法

    前提:搭建好redis集群环境,搭建方式请看:https://www.jb51.net/article/143749.htm 1. 新建工程,pom.xml文件中添加redis支持 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2

  • SpringBoot整合Lettuce redis过程解析

    首先解释一下Lettuce客户端: Lettuce 和 Jedis 的都是连接Redis Server的客户端程序.Jedis在实现上是直连redis server,多线程环境下非线程安全,除非使用连接池,为每个Jedis实例增加物理连接.Lettuce基于Netty的连接实例(StatefulRedisConnection),可以在多个线程间并发访问,且线程安全,满足多线程环境下的并发访问,同时它是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例. 1.添加依赖 <dependenc

  • SpringBoot+Vue+Redis实现单点登录(一处登录另一处退出登录)

    一.需求 实现用户在浏览器登录后,跳转到其他页面,当用户在其它地方又登录时,前面用户登录的页面退出登录(列如qq挤号那种方式) 二.实现思路 用户在前端填写用户信息登录后,后台接收数据先去数据库进行判断,如果登录成功,创建map集合,以用户id为键,token为值,先通过当前登录用户的id去获取token,如果token存在说明该用户已经登录过,调用redis以token为键删除上个用户的信息,调用方法生成新token,并将token存入map集合,将用户信息存入redis,并将token存入c

  • Springboot使用redis进行api防刷限流过程详解

    这篇文章主要介绍了Springboot使用redis进行api防刷限流过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 api限流的场景 限流的需求出现在许多常见的场景中 秒杀活动,有人使用软件恶意刷单抢货,需要限流防止机器参与活动 某api被各式各样系统广泛调用,严重消耗网络.内存等资源,需要合理限流 淘宝获取ip所在城市接口.微信公众号识别微信用户等开发接口,免费提供给用户时需要限流,更具有实时性和准确性的接口需要付费. api限流实

  • 基于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

  • Springboot整合minio实现文件服务的教程详解

    首先pom文件引入相关依赖 <!--minio--> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>3.0.10</version> </dependency> springboot配置文件application.yml 里配置minio信息 #minio配置 minio: endpo

  • IntelliJ IDEA基于SpringBoot如何搭建SSM开发环境的步骤详解

    之前给大家在博文中讲过如何通过eclipse快速搭建SSM开发环境,但相对而言还是有些麻烦的,今天玄武老师给大家介绍下如何使用IntelliJ IDEA基于SpringBoot来更快速地搭建SSM开发环境,相比于传统搭建方式,极少的配置文件和配置信息会让你彻底爱上它. 环境搭建步骤详解 第1步:创建Spring Initializr项目 在IntelliJ IDEA中新建项目,选择Spring Initializr,JDK版本选择自己安装的版本(首次使用可能显示没有,那么就点击New去按照步骤创

  • Docker开启远程安全访问的图文教程详解

    一.编辑docker.service文件 vi /usr/lib/systemd/system/docker.service 找到 [Service] 节点,修改 ExecStart 属性,增加 -H tcp://0.0.0.0:2375 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 这样相当于对外开放的是 2375 端口,当然也可以根据

  • CentOS6.5下Tomcat7 Nginx Redis配置步骤教程详解

    所有配置均在一台机器上完成,部署拓扑信息如下: 注意:由于Redis配置对jar包和tomcat版本比较严格,请务必使用tomcat7和本文中提供的jar包. 下载地址: http://pan.baidu.com/s/1bO67Ky tomcat: tomcat1 localhost:8080 tomcat2 localhost:9080 nginx: localhost:1210 redis: localhost:6379 1. tomcat的安装和配置 1. 在server.xml文件中,修

  • Spring Boot启动过程(五)之Springboot内嵌Tomcat对象的start教程详解

    标题和Spring Boot启动过程(四)之Spring Boot内嵌Tomcat启动很像,所以特别强调一下,这个是Tomcat对象的. 从TomcatEmbeddedServletContainer的this.tomcat.start()开始,主要是利用LifecycleBase对这一套容器(engine,host,context及wrapper)进行启动并发布诸如configure_start.before_init.after_start的lifecycleEvent事件给相应的监听器(如

  • springboot整合websocket最基础入门使用教程详解

    项目最终的文件结构 1 添加maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <

  • 基于vue-cli3多页面开发apicloud应用的教程详解第1/2页

    之前开发项APP项目直接用APICloud+原生js的方式进行编写,整个项目下来发现开发慢,页面代码多且复杂,维护起来相对困难,而且文件大打包之后的APP会比较大,apicloud的框架也不好用,支持部分es67(像let.const.import等es6新特性不支持写的太难受了) 采用vue-cli+APIcloud的方式写解决以上痛点,开发灵活,并且打包之后体积更小速度更快 环境依赖 vue webpack vue-cli3 nodeJS 基本流程 项目开发最好准备两个项目,一个打包APP,

  • SpringBoot整合Swagger和Actuator的使用教程详解

    前言 本篇文章主要介绍的是SpringBoot整合Swagger(API文档生成框架)和SpringBoot整合Actuator(项目监控)使用教程. SpringBoot整合Swagger 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码. Swagger 介绍 Swagger 是一套基于 OpenAPI 规范构建的开源工具,可以帮助我们设计.构建.记录以及使用 Rest API.Swagger 主要包含了以下三个部分: Swagger Editor:基于浏览器的编辑器,我们

  • MongoDB4.0在windows10下的安装与服务配置教程详解

    本地安装及网页测试 1.在官网下载最新的安装文件 下载地址 : https://www.mongodb.com/download-center#community 可以在MongoDB官网选择Community Server版本下载,但是它似乎经常没有响应.可以在这里直接选择需要的版本下载,要在Windows下安装可以直接选msi安装文件. 安装msi文件 下载好后,一致next,在中间一步选择 custom 选项,以选定自己喜好的安装位置 修改安装路径. 这个MSI文件有问题,这里必须不能改动

随机推荐