InfluxDB在Java中的使用

InfluxDB在Java中的使用

InfluxDB(时序数据库),常用的一种使用场景:监控数据统计。每毫秒记录一下电脑内存的使用情况,然后就可以根据统计的数据,利用图形化界面(InfluxDB V1一般配合Grafana)制作内存使用情况的折线图;

可以理解为按时间记录一些数据(常用的监控数据、埋点统计数据等),然后制作图表做统计;

依赖的Jar包:

<dependency> 	
		<groupId>org.influxdb</groupId> 	
		<artifactId>influxdb-java</artifactId> 	
		<version>2.10</version> 
</dependency>

InfluxDB工具类

package com.common.utils.influxdb;

import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import org.influxdb.InfluxDB;
import org.influxdb.InfluxDB.ConsistencyLevel;
import org.influxdb.InfluxDBFactory;
import org.influxdb.dto.BatchPoints;
import org.influxdb.dto.Point;
import org.influxdb.dto.Point.Builder;
import org.influxdb.dto.Pong;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;

/**

 * InfluxDB数据库连接操作类

 * 

 * @author 大脑补丁
   */
   public class InfluxDBConnection {
   

   // 用户名
   private String username;
   // 密码
   private String password;
   // 连接地址
   private String openurl;
   // 数据库
   private String database;
   // 保留策略
   private String retentionPolicy;

   private InfluxDB influxDB;

   public InfluxDBConnection(String username, String password, String openurl, String database,
   		String retentionPolicy) {
   
   	this.username = username;
   	this.password = password;
   	this.openurl = openurl;
   	this.database = database;
   	this.retentionPolicy = retentionPolicy == null || retentionPolicy.equals("") ? "autogen" : retentionPolicy;
   	influxDbBuild();
   }

   /**

    * 创建数据库
    * 
    * @param dbName
      */
      @SuppressWarnings("deprecation")
      public void createDB(String dbName) {
   
      influxDB.createDatabase(dbName);
      }

   /**

    * 删除数据库
    * 
    * @param dbName
      */
      @SuppressWarnings("deprecation")
      public void deleteDB(String dbName) {
   
      influxDB.deleteDatabase(dbName);
      }

   /**

    * 测试连接是否正常
    * 
    * @return true 正常
      */
      public boolean ping() {
   
      boolean isConnected = false;
      Pong pong;
      try {
   
      	pong = influxDB.ping();
      	if (pong != null) {
   
      		isConnected = true;
      	}
      } catch (Exception e) {
   
      	e.printStackTrace();
      }
      return isConnected;
      }

   /**

    * 连接时序数据库 ,若不存在则创建
    * 
    * @return
      */
      public InfluxDB influxDbBuild() {
   
      if (influxDB == null) {
   
      	influxDB = InfluxDBFactory.connect(openurl, username, password);
      }
      
  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
您好!对于无法连接InfluxDB的问题,首先需要确保以下几点: 1. 确认InfluxDB服务器已正确启动,并且可以通过网络访问。 2. 检查InfluxDB服务器的连接配置,括主机名、端口号、用户名和密码等信息是否正确。 3. 确保您的Java代码已正确引入InfluxDB的相关依赖。 以下是一个简单的示例代码,用于连接InfluxDB并执行查询操作: ```java import org.influxdb.InfluxDB; import org.influxdb.InfluxDBFactory; import org.influxdb.dto.Query; import org.influxdb.dto.QueryResult; public class InfluxDBExample { public static void main(String[] args) { // 连接InfluxDB InfluxDB influxDB = InfluxDBFactory.connect("http://localhost:8086", "username", "password"); // 查询示例数据 Query query = new Query("SELECT * FROM measurement", "database"); QueryResult queryResult = influxDB.query(query); // 处理查询结果 if (queryResult.getResults() != null) { for (QueryResult.Result result : queryResult.getResults()) { if (result.getSeries() != null) { for (QueryResult.Series series : result.getSeries()) { System.out.println("Measurement: " + series.getName()); System.out.println("Tags: " + series.getTags()); System.out.println("Columns: " + series.getColumns()); System.out.println("Values: " + series.getValues()); } } } } // 关闭InfluxDB连接 influxDB.close(); } } ``` 请根据您的实际情况修改代码的连接信息和查询语句,并确保已正确导入InfluxDB的相关依赖库。如果问题仍然存在,请提供具体的错误信息,以便更好地帮助您解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值