InfluxDb 1.8安装及整合SpringBoot
由于1.x 和2.x 版本差异很大,不管是在语法结构上还是在命令行的使用上。为了兼顾学习成本以及使用成本,InfluxDb采用1.8.x的版本,1.x的版本可以像使用sql语句一样丝滑的使用InfluxDb。
一、安装部署(centos7)
1、获取安装包
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.4.x86_64.rpm
2、安装
yum localinstall influxdb-1.8.4.x86_64.rpm
3、配置用户名密码(非必须)
vim /etc/influxdb/influxdb.conf
在客户端工具窗口中执行以下语句
# 创建管理员权限的用户
CREATE USER root WITH PASSWORD 'root' WITH ALL PRIVILEGES
4、启动服务
systemctl start influxdb
5、验证
[root@Server01 ~]# influx -username root -password root
Connected to http://localhost:8086 version 1.8.4
InfluxDB shell version: 1.8.4
>
二、与SpringBoot整合
1、添加依赖
<!--influxdb-->
<dependency>
<groupId>com.influxdb</groupId>
<artifactId>influxdb-client-java</artifactId>
<version>2.3.0</version>
</dependency>
2、添加配置
#influxDb
#连接地址
spring.influx.url=http://192.168.63.3:8086
#用户名
spring.influx.user=root
#密码
spring.influx.password=root
#数据库
spring.influx.database=iot
#持久化策略
spring.influx.retentionPolicy=""
3、开启influx功能
4、编写测试类
@Data
@ConfigurationProperties(prefix = "spring.influx")
@Component
public class InfluxDbConfig {
private String username;
private String password;
private String url;
private String database;
private String retentionPolicy;
@Bean
public InfluxDBClient init() {
return InfluxDBClientFactory.createV1(url,username,password.toCharArray(),database,retentionPolicy);
}
}
public static void queryExampleUseingInfluxDBClient() {
@Autowired
private InfluxDBClient client;
System.out.println("*** Write Points ***");
// 2.创建写入api
try (WriteApi writeApi = client.getWriteApi()) {
Point point = Point.measurement("tests").addTag("test_id", "value").addField("value", 20);
// 执行写入操作
writeApi.writePoint(point);
}
// 执行查询操作
System.out.println("*** Query Points ***");
String query = String.format("from(bucket: \"%s\") "
+ " |> range(start: -3h, stop: 3h) "
+ " |> filter(fn: (r) => r[\"_measurement\"] == \"%s\")","iot","tests");
List<FluxTable> tables = client.getQueryApi().query(query);
tables.get(0).getRecords().forEach(record -> System.out.println(String.format("%s %s: %s %s", record.getTime(),
record.getMeasurement(), record.getField(), record.getValue())));
client.close();
}