美文网首页
springboot3与influxDB(时序数据库)

springboot3与influxDB(时序数据库)

作者: 不知不怪 | 来源:发表于2023-07-01 21:41 被阅读0次

1 安装

cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

yum install influxdb
sudo systemctl start influxd

firewall-cmd --zone=public --add-port=8086/tcp --permanent
systemctl restart firewalld

2 使用

influx
CREATE USER root WITH PASSWORD '123456' WITH ALL PRIVILEGES
SHOW USERS
CREATE DATABASE test
SHOW DATABASES
USE test
INSERT cpu,host=192.168.1.1 load=0.1,usage=0.2
SELECT * FROM "cpu"
SELECT "host","load","usage" FROM "cpu"
SELECT "host","load","usage" FROM "cpu" WHERE "host" = '192.168.1.1'
SELECT "host","load","usage" FROM "cpu" WHERE "usage" > 0.1
CREATE DATABASE "db_name"
DROP DATABASE "db_name"
SHOW MEASUREMENTS
DROP MEASUREMENT "t_name"

3 在springboot3中的使用

3.1 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.gzz</groupId>
    <artifactId>67-boot-hello</artifactId>
    <version>1.0</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.0</version>
        <relativePath />
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>17</java.version>
        <skipTests>true</skipTests>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.influxdb</groupId>
            <artifactId>influxdb-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3.2 application.yml

spring: 
  influx: 
    url: http://192.168.217.128:8086
    user: root
    password: 123456

3.3 Config.java

package com.gzz.config;
import org.influxdb.InfluxDB;
import org.influxdb.impl.InfluxDBMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class Config {
    @Bean
    public InfluxDBMapper influxDBMapper(InfluxDB influxDB) {
        return new InfluxDBMapper(influxDB);
    }
}

3.4 User .java

package com.gzz.user;
import org.influxdb.annotation.Column;
import org.influxdb.annotation.Measurement;
import lombok.Data;
@Data
@Measurement(name = "t_user", database = "test")
public class User {
    @Column(name = "time")
    private String time;
    @Column(name = "user_id",tag = true)
    private Integer userId;
    @Column(name = "status1")
    private Integer status1;
    @Column(name = "status2")
    private Integer status2;
    @Column(name = "status3")
    private Integer status3;
    @Column(name = "status4")
    private Integer status4;
    @Column(name = "status5")
    private Integer status5;
    @Column(name = "status6")
    private Integer status6;
}

3.5 UserVo.java 有点奇怪 但这样好使

package com.gzz.user;
import org.influxdb.annotation.Column;
import org.influxdb.annotation.Measurement;
import lombok.Data;
@Data
@Measurement(name = "t_user", database = "test")
public class UserVo {
    @Column(name = "time")
    private String time;
    @Column(name = "user_id",tag = true)
    private String userId;
    @Column(name = "status1")
    private String status1;
    @Column(name = "status2")
    private String status2;
    @Column(name = "status3")
    private String status3;
    @Column(name = "status4")
    private String status4;
    @Column(name = "status5")
    private String status5;
    @Column(name = "status6")
    private String status6;
}

3.6 UserDao .java

package com.gzz.user;
import java.util.List;
import org.influxdb.annotation.Measurement;
import org.influxdb.dto.Query;
import org.influxdb.impl.InfluxDBMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Repository
public class UserDao {
    @Autowired
    private InfluxDBMapper influxDBMapper;
    private static final String TABLE = User.class.getAnnotation(Measurement.class).name();
    private static final String DATABASE = User.class.getAnnotation(Measurement.class).database();
    public void selectAll() {
        StringBuilder sql = new StringBuilder("select * from " + TABLE);
        List<UserVo> records = influxDBMapper.query(new Query(sql.toString(), DATABASE), UserVo.class);
        records.forEach(i -> log.info("record={}", i));
    }
    public void save(User user) {
        influxDBMapper.save(user);
    }
}

3.7 Application .java

package com.gzz;
import java.io.IOException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.gzz.user.User;
import com.gzz.user.UserDao;
import jakarta.annotation.PostConstruct;
/**
 * @author 高振中
 * @date 2023-06-18 00:16:57
 **/
@SpringBootApplication
public class Application {
    public static void main(String[] args) throws IOException {
        SpringApplication.run(Application.class, args);
    }
    @Autowired
    private UserDao userDao;
    @PostConstruct
    public void test() {
        User user = new User();
        user.setUserId(2);
        user.setStatus1(3);
        user.setStatus2(5);
        user.setStatus3(3);
        user.setStatus4(4);
        user.setStatus5(7);
        user.setStatus6(6);
        userDao.save(user);
        userDao.selectAll();
    }
}

相关文章

  • influxDB

    本文介绍了influxDB时序数据库及Go语言操作influxDB。 InfluxDB是一个开源分布式时序、事件和...

  • 一个Go语言的小技巧

    源码来自时序数据库InfluxDB的高可用套件InfluxDB-relay.

  • InfluxDB概念和基本操作

    InfluxDB (时序数据库) 基本概念 InfluxDB(时序数据库),常用的一种使用场景:监控数据统计。每毫...

  • 新手上路,时序数据库InfluxDB命令总是报错,这篇文章不容错

    初次使用时序数据库InfluxDB,有些概念还是需要了解清楚的,InfluxDB与传统的关系型数据库MySql在使...

  • Influxdb in Action

    Influxdb是什么? InfluxDB是一个由InfluxData开发的开源时序型数据库,专注于海量时序数据的...

  • 180726-InfluxDB基本概念小结

    InfluxDB基本概念小结 InfluxDB作为时序数据库,与传统的关系型数据库相比而言,还是有一些区别的,下面...

  • InfluxDB与Grafana相关资料

    时序数据库InfluxDB使用详解 使用Glances、InfluxDB和Grafana监视性能数据 (开源测试工...

  • InfluxDB的安装及常用操作

    InfluxDB特点 一句话:相对于CRUD的数据库更偏重CR的时序数据库 InfluxDB的安装 阿里云Cent...

  • 时序数据库influxdb

    influxdb 简介 Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。...

  • 初识influxDB

    influxDB是什么? 参考这篇文章,轻松理解: InfluxDB(时序数据库),常用的一种使用场景:监控数据统...

网友评论

      本文标题:springboot3与influxDB(时序数据库)

      本文链接:https://www.haomeiwen.com/subject/sgmxudtx.html