文档章节

Redis嵌入式服务器,用于Java集成测试

Java高级架构师n
 Java高级架构师n
发布于 09/11 21:08
字数 706
阅读 13
收藏 0

    

Maven依赖

Maven Central:

< 依赖 >
 < groupId > com.github.kstyrc </ groupId >
 < artifactId > embedded-redis </ artifactId >
 < version > 0.6 </ version >
</ dependency >

以前的版本(0.6之前):

< repository >
 < id > clojars.org </ id >
 < url > http://clojars.org/repo </ url >
</ repository >
...
< 依赖 >
 < groupId > redis.embedded </ groupId >
 < artifactId > embedded-redis </ artifactId >
 < version > 0.5 </ version >
</ dependency >

用法

运行RedisServer非常简单:

RedisServer redisServer = new RedisServer(6379);
redisServer 。开始();
//做一些工作 
redisServer 。停();

您还可以为RedisServer提供自己的可执行文件:

// 1)给出显式文件(os-independent broken!)
RedisServer redisServer = new RedisServer( “ / path / to / your / redis ”, 6379);
// 2)给定与os无关的矩阵
RedisExecProvider customProvider = RedisExecProvider 。defaultProvider()
 .override(OS 。 UNIX,“ /路径/到/ UNIX / redis的”)
 .override(OS 。 WINDOWS,建筑。 86, “ /路径/到/窗/ redis的”)
 .override(OS ,视窗,建筑, x86_64的,“ /路径/到/窗/ Redis的”)
 .override(OS 。 MAC_OS_X,建筑。 86, “ /路径/到/ MacOSX的/ redis的”)
 .override(OS 。 MAC_OS_X,建筑。 x86_64的,“ /路径/到/ MacOSX的/ redis的”)
 
RedisServer redisServer = new RedisServer(customProvider,6379);

您还可以使用Fluent API创建RedisServer:

RedisServer redisServer = RedisServer 。建设者()
 .redisExecProvider(customRedisProvider)
 .port(6379)
 .slaveOf(“ locahost ”,6378)
 .configFile(“ / path / to / your / redis.conf ”)
 。建立();

甚至从头开始创建简单的redis.conf文件:

RedisServer redisServer = RedisServer 。建设者()
 .redisExecProvider(customRedisProvider)
 .port(6379)
 .slaveOf(“ locahost ”,6378)
 .setting(“ daemonize no ”)
 .setting(“ appendonly no ”)
 .setting(“ maxheap 128M ”)
 。建立();

设置群集

我们的嵌入式Redis支持带有Sentinels和主从复制的HA Redis集群

使用短暂的端口

在临时端口上使用Redis群集进行简单的redis集成测试,其设置类似于生产中的设置,如下所示:

Redis嵌入式服务器,用于Java集成测试

 

检索端口

上面的示例在临时端口上启动Redis群集,稍后您可以使用它cluster.ports(),这将返回群集的所有端口的列表。您还可以使用cluster.sentinelPorts() 或服务器获取哨兵端口cluster.serverPorts()。JedisUtilclass包含与Jedis客户端一起使用的实用程序方法。

使用预定义端口

您还可以在预定义的端口上启动Redis群集,甚至可以混合使用两种方法:

public class SomeIntegrationTestThatRequiresRedis {
 private RedisCluster cluster;
 @Before 
 public void setup()抛出 Exception {
 final List < Integer > sentinels = Arrays 。asList(26739,26912);
 final List < Integer > group1 = Arrays 。asList(6667,6668);
 final List < Integer > group2 = Arrays 。asList(6387,6379);
 //创建一个具有3个标记的 
 群集,仲裁大小为2和3个复制组,每个复制组包含一个主群集和一个从属群集= RedisCluster 。builder()。sentinelPorts(哨兵)。quorumSize(2)
 .serverPorts(group1)。replicationGroup(“ master1 ”,1)
 .serverPorts(group2)。replicationGroup(“ master2 ”,1)
 .ephemeralServers()。replicationGroup(“ master3 ”,1)
 。建立();
 集群。开始();
 }
//(...)

上面将创建并启动一个群集,其中包含端口上的标记26739, 26912,第一个复制组6667, 6668,第二个复制组6387, 6379和临时端口上的第三个复制组。

Redis版本

当没有提供所需的redis可执行文件时,RedisServer运行封装在jar中的os依赖可执行文件。目前用途:

  • 对于Linux / Unix,Redis 2.8.19
  • 对于OSX,Redis 2.8.19
  • 对于Windows,Redis 2.8.19:https://github.com/MSOpenTech/redis/releases/tag/win-2.8.19

© 著作权归作者所有

Java高级架构师n
粉丝 1
博文 15
码字总数 48965
作品 0
长沙
架构师
私信 提问
JSE 、JEE、 JME 的区别

Java SE : java standard edition , JSE。它允许允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的java应用程序。 java SE包含了java Web 服务开发的类,并为java platform ,e...

hellation_
2018/11/14
16
0
Infinispan 8.0.0.Final 正式版发布

Infinispan 8.0.0.Final 正式版发布了,这是一个最棒的版本,数字 8 代表第一在 Logo 中的嵌入,其二是代码完全迁移到 Java 8 上开发。 Infinispan 8 给我们带来: 全新的函数风格的 API 用于...

红薯
2015/09/01
2.9K
5
什么是J2EE、Java SE、Java EE、Java ME?

目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Ed...

Midnight
2010/12/28
447
0
完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

拉偶有所依
2015/05/20
4.5K
25
推荐!国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

huntering
2015/01/13
585
0

没有更多内容

加载失败,请刷新页面

加载更多

小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
32分钟前
2
0
《JAVA核心知识》学习笔记(6. Spring 原理)-5

它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 6.1.1. Spring 特点 6.1.1.1. 轻量级 6.1.1.2. 控制反转 6.1.1....

Shingfi
33分钟前
4
0
Excel导入数据库数据+Excel导入网页数据【实时追踪】

1.Excel导入数据库数据:数据选项卡------>导入数据 2.Excel导入网页数据【实时追踪】:

东方墨天
42分钟前
4
1
正则表达式如何匹配一个单词存在一次或零次并且不占捕获组位置

正则表达式如何匹配一个单词存在一次或零次并且不占捕获组位置 今天要用正则表达式实现匹配一个词出现一次或者不出现的情况,但是又不仅仅是这么简单的需求。先详细说下我这种情况吧,也许有...

Airship
48分钟前
6
0
第八讲:asp.net C# web 读取文件

本讲主要讲解如何在asp.net页面上传文件。 首先,前台页面: 其次,后台页面: 结果: 1、前台效果: 2、后台结果:

刘日辉
59分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部