Centos MacBook Docker离线安装InfluxDB超级简单
maven依赖InfluxDB
<dependency>
<groupId>org.influxdb</groupId>
<artifactId>influxdb-java</artifactId>
<version>2.14</version>
</dependency>
InfluxDB配置
spring:
influx:
url: http://192.168.1.5:8086
user: admin
password: abcd_2021
database: demo
InfluxDB配置类
package com.beyond.data.config;
import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
import org.influxdb.dto.BatchPoints;
import org.influxdb.dto.Point;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Component
@Configuration
publicclassInfluxDBConfig{
@Value("${spring.influx.user}")
privateString userName;
@Value("${spring.influx.password}")
privateString password;
@Value("${spring.influx.url}")
privateString url;
//数据库
@Value("${spring.influx.database}")
privateString database;
//保留策略
privateString retentionPolicy;
privateInfluxDB influxDB;
publicInfluxDBConfig(){}
publicInfluxDBConfig(String userName,String password,String url,String database){
this.userName = userName;
this.password = password;
this.url = url;
this.database = database;
// autogen默认的数据保存策略
this.retentionPolicy = retentionPolicy ==null||"".equals(retentionPolicy)?"autogen": retentionPolicy;
this.influxDB = influxDbBuild();
}
/**
* 设置数据保存策略 defalut 策略名 /database 数据库名/ 30d 数据保存时限30天/ 1 副本个数为1/ 结尾DEFAULT
* 表示 设为默认的策略
*/
publicvoid createRetentionPolicy(){
String command =String.format("CREATE RETENTION POLICY \"%s\" ON \"%s\" DURATION %s REPLICATION %s DEFAULT",
"defalut", database,"30d",1);
this.query(command);
}
/**
* 连接时序数据库;获得InfluxDB
**/
privateInfluxDB influxDbBuild(){
if(influxDB ==null){
influxDB =InfluxDBFactory.connect(url, userName, password);
influxDB.setDatabase(database);
}
return influxDB;
}
/**
* 插入
* @param measurement 表
* @param tags 标签
* @param fields 字段
*/
publicvoid insert(String measurement,Map<String,String> tags,Map<String,Object> fields){
influxDbBuild();
Point.Builder builder =Point.measurement(measurement);
builder.time(System.currentTimeMillis(),TimeUnit.MILLISECONDS);
builder.tag(tags);
builder.fields(fields);
influxDB.write(database,"", builder.build());
}
/**
* @desc 插入,带时间time
* @date 2021/3/27
*@param measurement
*@param time
*@param tags
*@param fields
* @return void
*/
publicvoid insert(String measurement,long time,Map<String,String> tags,Map<String,Object> fields){
influxDbBuild();
Point.Builder builder =Point.measurement(measurement);
builder.time(time,TimeUnit.MILLISECONDS);
builder.tag(tags);
builder.fields(fields);
influxDB.write(database,"", builder.build());
}
/**
* @desc influxDB开启UDP功能,默认端口:8089,默认数据库:udp,没提供代码传数据库功能接口
* @date 2021/3/13
*@param measurement
*@param time
*@param tags
*@param fields
* @return void
*/
publicvoid insertUDP(String measurement,long time,Map<String,String> tags,Map<String,Object> fields){
influxDbBuild();
Point.Builder builder =Point.measurement(measurement);
builder.time(time,TimeUnit.MILLISECONDS);
builder.tag(tags);
builder.fields(fields);
int udpPort =8089;
influxDB.write(udpPort, builder.build());
}
/**
* 查询
* @param command 查询语句
* @return
*/
publicQueryResult query(String command){
influxDbBuild();
return influxDB.query(newQuery(command, database));
}
/**
* @desc 查询结果处理
* @date 2021/5/12
*@param queryResult
*/
publicList<Map<String,Object>> queryResultProcess(QueryResult queryResult){
List<Map<String,Object>> mapList =newArrayList<>();
List<QueryResult.Result> resultList = queryResult.getResults();
//把查询出的结果集转换成对应的实体对象,聚合成list
for(QueryResult.Result query : resultList){
List<QueryResult.Series> seriesList = query.getSeries();
if(seriesList !=null&& seriesList.size()!=0){
for(QueryResult.Series series : seriesList){
List<String> columns = series.getColumns();
String[] keys = columns.toArray(newString[columns.size()]);
List<List<Object>> values = series.getValues();
if(values !=null&& values.size()!=0){
for(List<Object> value : values){
Map<String,Object> map =newHashMap(keys.length);
for(int i =0; i < keys.length; i++){
map.put(keys[i], value.get(i));
}
mapList.add(map);
}
}
}
}
}
return mapList;
}
/**
* @desc InfluxDB 查询 count总条数
* @date 2021/4/8
*/
publiclong countResultProcess(QueryResult queryResult){
long count =0;
List<Map<String,Object>> list = queryResultProcess(queryResult);
if(list !=null&& list.size()!=0){
Map<String,Object> map = list.get(0);
double num =(Double)map.get("count");
count =newDouble(num).longValue();
}
return count;
}
/**
* 查询
* @param dbName 创建数据库
* @return
*/
publicvoid createDB(String dbName){
influxDbBuild();
influxDB.createDatabase(dbName);
}
/**
* 批量写入测点
*
* @param batchPoints
*/
publicvoid batchInsert(BatchPoints batchPoints){
influxDbBuild();
influxDB.write(batchPoints);
}
/**
* 批量写入数据
*
* @param database
* 数据库
* @param retentionPolicy
* 保存策略
* @param consistency
* 一致性
* @param records
* 要保存的数据(调用BatchPoints.lineProtocol()可得到一条record)
*/
publicvoid batchInsert(finalString database,finalString retentionPolicy,
finalInfluxDB.ConsistencyLevel consistency,finalList<String> records){
influxDbBuild();
influxDB.write(database, retentionPolicy, consistency, records);
}
/**
* @desc 批量写入数据
* @date 2021/3/19
*@param consistency
*@param records
*/
publicvoid batchInsert(finalInfluxDB.ConsistencyLevel consistency,finalList<String> records){
influxDbBuild();
influxDB.write(database,"", consistency, records);
}
publicString getUserName(){
return userName;
}
publicvoid setUserName(String userName){
this.userName = userName;
}
publicString getPassword(){
return password;
}
publicvoid setPassword(String password){
this.password = password;
}
publicString getUrl(){
return url;
}
publicvoid setUrl(String url){
this.url = url;
}
publicString getDatabase(){
return database;
}
publicvoid setDatabase(String database){
this.database = database;
}
publicString getRetentionPolicy(){
return retentionPolicy;
}
publicvoid setRetentionPolicy(String retentionPolicy){
this.retentionPolicy = retentionPolicy;
}
publicInfluxDB getInfluxDB(){
return influxDB;
}
publicvoid setInfluxDB(InfluxDB influxDB){
this.influxDB = influxDB;
}
}
调用
@Autowired
privateInfluxDBConfig influxDBConfig;
......
influxDBConfig.insert(measurement, tags, fields);
<audio controls="controls" style="display: none;"></audio>
相关推荐
《Learning Spring Boot 3.0 - 第三版》是一本专为Java和Spring开发者准备的指南,由Greg L. Turnquist撰写。这本书旨在简化生产级应用程序的开发过程,特别是利用Spring Boot 3.0框架。Spring Boot是Spring生态系统...
在Java开发领域,Spring Boot和Spring Batch的整合是构建高效批处理系统的一种常见方式。Spring Boot以其简洁的配置和快速的启动能力深受开发者喜爱,而Spring Batch作为Spring框架的一部分,专注于批量处理任务,...
标签“spring boot”、“java”、“spring”指出了本书的三个关键词:Spring Boot本身,以及Spring Boot开发所依赖的Java语言和Spring框架。Java作为一门广泛使用的编程语言,是编写Spring Boot应用的主要语言。而...
使用 Spring Boot 2.5.0 创建项目非常简单,只需要使用 Spring Initializr 工具,然后选择需要的依赖项,例如 Spring Web、Spring Data JPA、MyBatis 等。 依赖项管理 在 Spring Boot 2.5.0 中,依赖项管理是通过 ...
使用微服务进行Web服务开发并与Spring Boot应用程序集成 无缝添加持久性和数据层,使您的Spring Boot Web应用程序做得更多 使用Spring Boot集成企业服务以创建更复杂的Java应用程序 本书适用于经验丰富的Java和...
在Spring Boot中,"快速入门"通常指的是新手或初学者对Spring Boot的基本认识和基础使用,能够快速构建和部署一个Spring Boot应用程序。 ### Spring Boot概述 #### 1.1. 什么是Spring Boot Spring Boot是Spring...
##### 三、使用Spring Boot **13. 构建系统** - **13.1. 依赖管理** - Spring Boot提供了默认的依赖版本管理,避免了版本冲突问题。 - **13.2. Maven** - **13.2.1. 继承starter parent** - 使用starter parent...
spring-boot-helloWorld:spring-boot的helloWorld版本 spring-boot-mybaits-annotation:注解版本 spring-boot-mybaits-xml:xml配置版本 spring-boot-mybatis-mulidatasource:springboot+mybatis多数据源最简解决...
《Spring Boot实战派》源码提供了丰富的学习材料,旨在帮助开发者深入理解并熟练掌握Spring Boot这一流行的Java后端开发框架。Spring Boot简化了Spring应用程序的初始设置和配置,使得开发人员能够快速构建可运行的...
Spring Boot Admin提供了丰富的API和事件监听机制,使得二次开发变得相对简单。 总的来说,Spring Boot Admin是一个强大的工具,它极大地简化了Spring Boot应用的管理和监控。通过其直观的UI和与Spring Boot ...
1. 快速起步:Spring Boot通过“起步依赖”(Starter POMs)使得添加所需功能变得简单,如Web、数据访问、安全等。 2. 自动配置:基于条件注解的自动配置,能根据项目中的类和配置文件自动设置Bean。 3. 内嵌式...
《Spring Boot 2 Cookbook 第二版》是一本针对Java开发者极具价值的开发指南,它深入浅出地介绍了Spring Boot 2这一强大框架的使用方法。Spring Boot是Spring框架的一个子项目,旨在简化Java应用程序的初始搭建以及...
Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的初始搭建以及开发过程。它集成了大量常用的第三方库配置,如 JDBC、MongoDB、RabbitMQ、Quartz 等,使得开发者可以“零配置”地启动项目,...
例如,在提供的代码清单 1 中,可以看到如何定义一个简单的 Spring Boot 应用的 POM 文件,其中指定了 Spring Boot 的版本和 `spring-boot-starter-web` 依赖。 通过这种方式,Spring Boot 实现了快速构建和运行 ...
本课程内容包括Spring简介、Spring Boot简介、安装JDK、安装Maven、第一个Spring Boot程序(使用Spring Initializr构建、Spring Boot代码讲解、安装Notepad++)、构建系统、代码、配置、三种方式运行程序、安装...
所以,我们花了一点点时间,整理,翻译出了全网最新,质量最高的 Spring Boot 3 中文文档。我们使用了 Deepl AI 翻译,并且对翻译后的内容进行人工逐行校验,从 java 开发者的角度对内容进行优化,保留了一些原汁...
在现代Web应用开发中,Vue.js和Spring Boot的结合已经成为了一种常见的前后端分离架构模式。这本《Vue Spring Boot前后端分离开发实战》的源码提供了深入学习和实践这一技术栈的机会。以下是对其中涉及知识点的详细...
在第三步中,选择自己所需的依赖、Spring Boot 的版本,选择 WEB 开发的所需的 starter。最后,指定项目的名称和路径,即可完成项目的创建。 在创建成功的项目中,有一个 DemoApplication 是项目的启动类,里面有一...
3. **内嵌服务器**:Spring Boot 内置了如 Tomcat 或 Jetty 这样的 Web 服务器,使得无需额外配置即可启动服务。 4. **命令行工具**:Spring Boot 提供了命令行界面,允许快速创建和运行 Spring 应用。 5. **健康...
《Spring Boot企业级开发教程》配套资料是一份全面学习Spring Boot技术栈的宝贵资源,它涵盖了从基础到进阶的企业级应用开发知识。这个压缩包包含的教学材料多样,旨在帮助学习者深入理解并掌握Spring Boot的核心...