InfluxDB环境搭建以及在Springboot中的简单使用

本文档详细介绍了如何在Linux环境下通过rpm安装InfluxDB,配置端口和管理用户,以及如何通过shell命令操作数据库。此外,还展示了在Springboot中配置和使用InfluxDB的Java API,包括yml配置、Bean注入和数据的读写操作。最后,提供了参考资料链接以供深入学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

环境搭建

rpm安装

端口

配置文件

启动

查看状态

查看web页面

SHELL命令

链接shell

创建数据库

查看数据库

创建用户

--管理员用户

--创建普通用户并且授权

-- 创建数据库

-- 查询所有表

-- 删除

--写入

--查询具体表数据

-- 清空表数据

JAVA API 使用

yml配置influxdb

Bean方式配置

API调用

官方API

代码详见:

参考资料



环境搭建

rpm安装

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.2.4.x86_64.rpm
yum influxdb-1.2.4.x86_64.rpm

此处安装的是1.2.4,需要注意的是,高版本的不支持web访问。

其他版本的安装可以参考官网,讲解的很详细

https://docs.influxdata.com/influxdb/v1.7/introduction/installation/

端口

  • port 8083:管理页面端口,访问localhost:8083可以进入你本机的influxdb管理页面;
  • port 8086:http连接influxdb client端口,一般使用该端口往本机的influxdb读写数据。

配置文件

/etc/influxdb/influxdb.conf 采用最简单的配置,修改一下2处,分别是设置web访问和http访问的端口、密码

[admin]
  # Determines whether the admin service is enabled.
   enabled = true
  #WEB页面的端口
  # The default bind address used by the admin service.
   bind-address = ":8083"
[http]
  # Determines whether HTTP endpoint is enabled.
  # enabled = true

  # The bind address used by the HTTP service.
  bind-address = ":8086"

  #开启密码
  # Determines whether HTTP authentication is enabled.
  auth-enabled = true

启动

systemctl start influxdb

查看状态

[root@axe1 influxdb]# systemctl status influxdb
● influxdb.service - InfluxDB is an open-source, distributed, time series database
   Loaded: loaded (/usr/lib/systemd/system/influxdb.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-10-08 18:54:59 CST; 8min ago
     Docs: https://docs.influxdata.com/influxdb/
 Main PID: 860 (influxd)
   CGroup: /system.slice/influxdb.service
           └─860 /usr/bin/influxd -config /etc/influxdb/influxdb.conf

Oct 08 18:55:00 axe1 influxd[860]: [I] 2019-10-08T10:55:00Z Authentication enabled:true service=httpd
Oct 08 18:55:00 axe1 influxd[860]: [I] 2019-10-08T10:55:00Z Listening on HTTP:[::]:8086 service=httpd
Oct 08 18:55:00 axe1 influxd[860]: [I] 2019-10-08T10:55:00Z Starting retention policy enforcement service with check interval of 30m0s service=retention
Oct 08 18:55:00 axe1 influxd[860]: [I] 2019-10-08T10:55:00Z Listening for signals
Oct 08 18:55:00 axe1 influxd[860]: [I] 2019-10-08T10:55:00Z Storing statistics in database '_internal' retention policy 'monitor', at interval 10s service=monitor
Oct 08 18:55:00 axe1 influxd[860]: [I] 2019-10-08T10:55:00Z Sending usage statistics to usage.influxdata.com
Oct 08 18:55:01 axe1 influxd[860]: [I] 2019-10-08T10:55:01Z beginning level 2 compaction of group 0, 1 TSM files engine=tsm1
Oct 08 18:55:01 axe1 influxd[860]: [I] 2019-10-08T10:55:01Z compacting level 2 group (0) /var/lib/influxdb/data/testdb/autogen/4/000000003-000000002.tsm (#0) engine=tsm1
Oct 08 18:55:01 axe1 influxd[860]: [I] 2019-10-08T10:55:01Z compacted level 2 1 files into 0 files in 2.012775ms engine=tsm1
Oct 08 18:55:20 axe1 influxd[860]: [I] 2019-10-08T10:55:20Z /var/lib/influxdb/data/_internal/monitor/10 database index loaded in 27.72µs service=shard

查看web页面

 

SHELL命令

链接shell

[root@axe1 ~]# influx
Connected to http://localhost:8086 version 1.2.4
InfluxDB shell version: 1.2.4
> auth
username: admin
password:
> show databases
name: databases
name
----
_internal
testdb

>

创建数据库

create database testdb

查看数据库

show databases

创建用户

--管理员用户

   CREATE USER ... 一定要大写,否则会不识别

CREATE USER admin WITH PASSWORD 'admin
Spring Boot 是一个开源的 Java Web 开发框架,它提供了一些非常便捷的工具和组件,可以帮助我们快速地搭建一个健壮的 Web 应用程序。InfluxDB 是一种高性能、分布式、时序数据库,它主要用于存储和查询各种时间序列数据,例如系统指标、应用程序日志、传感器数据等。 在 Spring Boot 中,我们可以通过使用 InfluxDBJava 客户端库来实现与 InfluxDB 的交互。下面是一个示例代码,演示了如何在 Spring Boot 中使用 InfluxDB: 1.添加 InfluxDB 的 Maven 依赖: ``` <dependency> <groupId>org.influxdb</groupId> <artifactId>influxdb-java</artifactId> <version>2.17</version> </dependency> ``` 2.在 application.properties 文件中配置 InfluxDB 的连接信息: ``` influxdb.url=http://localhost:8086 influxdb.username=myusername influxdb.password=mypassword influxdb.database=mydatabase ``` 3.创建一个 InfluxDB 连接池: ``` @Configuration public class InfluxDBConfig { @Autowired private InfluxDBProperties properties; @Bean public InfluxDB influxDB() { InfluxDB influxDB = InfluxDBFactory.connect(properties.getUrl(), properties.getUsername(), properties.getPassword()); influxDB.setDatabase(properties.getDatabase()); influxDB.enableBatch(2000, 100, TimeUnit.MILLISECONDS); return influxDB; } } ``` 4.定义一个数据模型类: ``` @Data @NoArgsConstructor @AllArgsConstructor @Builder public class MyData { @Column(name = "time") private LocalDateTime time; @Column(name = "value") private Double value; @Column(name = "tag1") private String tag1; @Column(name = "tag2") private String tag2; } ``` 5.编写一个 InfluxDB 操作类: ``` @Repository public class MyDataRepository { @Autowired private InfluxDB influxDB; private final static String MEASUREMENT_NAME = "mydata"; public void save(MyData myData) { Point point = Point.measurement(MEASUREMENT_NAME) .time(Timestamp.valueOf(myData.getTime()).getTime(), TimeUnit.MILLISECONDS) .addField("value", myData.getValue()) .tag("tag1", myData.getTag1()) .tag("tag2", myData.getTag2()) .build(); influxDB.write(point); } public List<MyData> findByTag1AndTag2(String tag1, String tag2) { Query query = new Query("SELECT * FROM " + MEASUREMENT_NAME + " WHERE tag1='" + tag1 + "' AND tag2='" + tag2 + "'", influxDB.getDatabase()); QueryResult result = influxDB.query(query); return result.getResults().stream() .flatMap(r -> r.getSeries().stream()) .flatMap(s -> s.getValues().stream()) .map(v -> MyData.builder() .time(LocalDateTime.parse((String) v.get(0), DateTimeFormatter.ISO_DATE_TIME)) .value(Double.parseDouble(v.get(1).toString())) .tag1(s.getTags().get("tag1")) .tag2(s.getTags().get("tag2")) .build()) .collect(Collectors.toList()); } } ``` 6.在 Controller 中使用 MyDataRepository: ``` @RestController public class MyController { @Autowired private MyDataRepository myDataRepository; @PostMapping("/mydata") public void saveMyData(@RequestBody MyData myData) { myDataRepository.save(myData); } @GetMapping("/mydata") public List<MyData> getMyData(@RequestParam String tag1, @RequestParam String tag2) { return myDataRepository.findByTag1AndTag2(tag1, tag2); } } ``` 以上代码演示了如何在 Spring Boot 中使用 InfluxDB 进行数据存储和查询。我们可以根据具体的业务需求进行相应的修改和优化。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值