백엔드 개발 PHP 튜토리얼 RiSearch PHP를 사용하여 시계열 데이터 검색 및 집계를 구현하기 위한 기술 아이디어

RiSearch PHP를 사용하여 시계열 데이터 검색 및 집계를 구현하기 위한 기술 아이디어

Oct 03, 2023 am 08:34 AM
찾다 시계열 중합

RiSearch PHP 实现时间序列数据搜索与聚合的技术思路

시계열 데이터 검색 및 집계를 실현하기 위한 RiSearch PHP 기술 아이디어

소개:
인터넷의 발달과 함께 많은 응용 시스템은 센서 데이터, 로그 데이터, 주식과 같은 대량의 시계열 데이터를 생성합니다. 가격 등 이 데이터에 대한 중요한 요구 사항은 빠르고 정확하게 검색하고 집계할 수 있어야 한다는 것입니다. RiSearch는 Redis를 기반으로 하는 전체 텍스트 검색 엔진입니다. 이 기사에서는 RiSearch와 PHP를 사용하여 시계열 데이터의 검색 및 집계 기능을 구현하는 방법을 설명합니다.

1. RiSearch 설치 및 구성
먼저 Redis와 RiSearch를 설치하고 PHP에 Redis 확장을 설치해야 합니다. 아래 단계에 따라 수행할 수 있습니다.

  1. Redis 설치: Redis를 다운로드하고 설치하려면 Redis 공식 웹사이트(https://redis.io/)의 설명서를 참조하세요.
  2. RiSearch 설치: RiSearch 공식 웹사이트(https://github.com/RediSearch/RediSearch)의 설명서를 참조하여 RiSearch를 다운로드하고 설치하세요.
  3. redis 확장 설치: pecl install redis 명령을 실행하여 redis 확장을 설치하고 PHP 확장 목록에 추가합니다. pecl install redis命令来安装redis扩展,并将其添加到PHP的扩展列表中。

二、创建时间序列索引
使用RiSearch进行搜索和聚合之前,我们需要先创建时间序列索引。假设我们有一个日志系统,每条日志都包含时间戳和内容信息。我们可以通过以下代码来创建时间序列索引:

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$redis->rawCommand('FT.CREATE', 'logs', 'SCHEMA', 'timestamp', 'NUMERIC', 'content', 'TEXT');

// 将日志数据添加到索引中
$logs = array(
    array('timestamp' => 1615516800, 'content' => '这是第一条日志'),
    array('timestamp' => 1615603200, 'content' => '这是第二条日志'),
    // ...
);

foreach ($logs as $log) {
    $redis->rawCommand('FT.ADD', 'logs', 'doc:'.$log['timestamp'], 1.0, 'FIELDS', 'timestamp', $log['timestamp'], 'content', $log['content']);
}

?>
로그인 후 복사

在上面的代码中,我们首先创建了一个名为“logs”的时间序列索引,创建时定义了两个字段,分别是“timestamp”(时间戳)和“content”(内容)。然后,我们将每条日志数据按照时间顺序添加到了索引中。

三、搜索时间序列数据

使用RiSearch进行时间序列的搜索可以非常灵活和高效。以下是一个示例代码,用来根据时间范围搜索日志数据:

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$query = '@timestamp:[1615516800 1615603200]'; // 搜索2021-03-12到2021-03-13之间的日志

$result = $redis->rawCommand('FT.SEARCH', 'logs', $query, 'LIMIT', 0, 10);

// 输出搜索结果
foreach ($result as $key => $value) {
    if ($key % 2 === 0) {
        echo '日志ID:'.$value."
";
    } else {
        echo '内容:'.$value."
";
    }
}
?>
로그인 후 복사

在上面的代码中,我们使用了FT.SEARCH命令进行搜索,指定了要搜索的索引名称“logs”和查询语句“@timestamp:[1615516800 1615603200]”,表示搜索2021-03-12到2021-03-13之间的日志。通过限制结果的数量和遍历输出,我们可以得到搜索结果。

四、聚合时间序列数据

在实际应用中,我们经常需要对时间序列数据进行聚合,比如计算某个时间段内的平均值、最大值、最小值等。RiSearch也提供了相应的聚合功能,以下是一个示例代码,用来计算特定时间范围内日志内容的出现频率:

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$query = '@timestamp:[1615516800 1615603200]'; // 搜索2021-03-12到2021-03-13之间的日志

$result = $redis->rawCommand('FT.AGGREGATE', 'logs', $query, 'LOAD', 1, 'GROUPBY', 1, '@content', 'REDUCE', 'COUNT', 0, 'AS', 'count');

// 输出聚合结果
foreach ($result as $item) {
    echo '内容:'.$item['@content'].',出现频率:'.$item['count']."
";
}
?>
로그인 후 복사

在上面的代码中,我们使用了FT.AGGREGATE

2. 시계열 인덱스 생성

RiSearch를 검색 및 집계에 사용하기 전에 먼저 시계열 인덱스를 생성해야 합니다. 로깅 시스템이 있고 각 로그에 타임스탬프와 콘텐츠 정보가 포함되어 있다고 가정해 보겠습니다. 다음 코드를 통해 시계열 인덱스를 생성할 수 있습니다.
rrreee

위 코드에서는 먼저 "logs"라는 이름의 시계열 인덱스를 생성하고 생성 시 "timestamp"(타임 스탬프) 및 " 콘텐츠". 그런 다음 각 로그 데이터 조각을 시간순으로 인덱스에 추가했습니다. 🎜🎜3. 시계열 데이터 검색🎜🎜RiSearch를 사용하여 시계열을 검색하는 것은 매우 유연하고 효율적일 수 있습니다. 다음은 시간 범위를 기준으로 로그 데이터를 검색하는 샘플 코드입니다. 🎜rrreee🎜 위 코드에서는 검색할 인덱스 이름을 "logs"로 지정하여 FT.SEARCH 명령을 사용하여 검색했습니다. " 및 쿼리문 "@timestamp:[1615516800 1615603200]"은 2021-03-12에서 2021-03-13 사이의 로그를 검색한다는 의미입니다. 결과 수를 제한하고 출력을 반복함으로써 검색 결과를 얻을 수 있습니다. 🎜🎜4. 시계열 데이터 집계🎜🎜실제 응용에서는 특정 기간 내의 평균, 최대값, 최소값 등을 계산하는 등 시계열 데이터를 집계해야 하는 경우가 많습니다. RiSearch는 해당 집계 기능도 제공합니다. 다음은 특정 시간 범위 내에서 로그 내용의 빈도를 계산하는 샘플 코드입니다. 🎜rrreee🎜위 코드에서는 FT.AGGREGATE를 사용합니다. 이 명령은 집계를 수행합니다. 그리고 집계할 인덱스 이름 "logs"와 쿼리문 "@timestamp:[1615516800 1615603200]", 각 로그 내용의 발생 빈도를 계산한다는 의미의 집계 방법 "COUNT"를 지정합니다. 결과를 반복함으로써 집계된 결과를 얻을 수 있습니다. 🎜🎜요약: 🎜RiSearch와 PHP의 결합을 통해 시계열 데이터의 검색 및 집계 기능을 쉽게 구현할 수 있습니다. 시계열 인덱스를 생성하고 검색을 위해 FT.SEARCH를 사용하고 집계를 위해 FT.AGGREGATE를 사용함으로써 대량의 시계열 데이터를 빠르고 정확하게 처리하여 실제 애플리케이션의 요구 사항을 충족할 수 있습니다. 이 문서에서는 기본 아이디어와 코드 예제만 제공하므로 실제 사용에는 특정 요구 사항에 따라 해당 조정 및 최적화가 필요합니다. 🎜

위 내용은 RiSearch PHP를 사용하여 시계열 데이터 검색 및 집계를 구현하기 위한 기술 아이디어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C#을 사용하여 시계열 예측 알고리즘을 작성하는 방법 C#을 사용하여 시계열 예측 알고리즘을 작성하는 방법 Sep 19, 2023 pm 02:33 PM

C#을 활용한 시계열 예측 알고리즘 작성 방법 시계열 예측은 과거 데이터를 분석하여 미래 데이터 추세를 예측하는 방법입니다. 금융, 영업, 일기예보 등 다양한 분야에 폭넓게 활용되고 있습니다. 이 기사에서는 구체적인 코드 예제와 함께 C#을 사용하여 시계열 예측 알고리즘을 작성하는 방법을 소개합니다. 데이터 준비 시계열 예측을 수행하기 전에 먼저 데이터를 준비해야 합니다. 일반적으로 시계열 데이터는 길이가 충분해야 하며 시간순으로 정렬되어야 합니다. 데이터베이스에서 가져오거나

Windows 11 검색에서 뉴스 및 인기 콘텐츠를 제거하는 방법 Windows 11 검색에서 뉴스 및 인기 콘텐츠를 제거하는 방법 Oct 16, 2023 pm 08:13 PM

Windows 11에서 검색 필드를 클릭하면 검색 인터페이스가 자동으로 확장됩니다. 왼쪽에는 최근 프로그램 목록이 표시되고 오른쪽에는 웹 콘텐츠가 표시됩니다. Microsoft는 여기에 뉴스와 인기 콘텐츠를 표시합니다. 오늘의 확인에서는 Bing의 새로운 DALL-E3 이미지 생성 기능, "Bing과 함께 드래곤 채팅" 제안, 드래곤에 대한 추가 정보, 웹 섹션의 주요 뉴스, 게임 추천 및 인기 검색 섹션을 홍보합니다. 전체 항목 목록은 컴퓨터에서의 활동과 별개입니다. 일부 사용자는 뉴스를 볼 수 있는 기능을 높이 평가할 수도 있지만 이 모든 것은 다른 곳에서도 풍부하게 제공됩니다. 다른 사람들은 이를 직간접적으로 판촉이나 광고로 분류할 수도 있습니다. Microsoft는 자체 콘텐츠를 홍보하기 위해 인터페이스를 사용합니다.

시계열 확률 예측을 위한 분위수 회귀 시계열 확률 예측을 위한 분위수 회귀 May 07, 2024 pm 05:04 PM

원본 내용의 의미를 바꾸지 말고 내용을 미세 조정하고 내용을 다시 작성하고 계속하지 마십시오. "분위수 회귀는 이러한 요구를 충족하여 정량화된 확률로 예측 구간을 제공합니다. 이는 특히 응답 변수의 조건부 분포에 관심이 있는 경우 예측 변수와 응답 변수 간의 관계를 모델링하는 데 사용되는 통계 기술입니다. 기존 회귀와 달리 분위수 회귀는 조건부 평균보다는 반응 변수의 조건부 크기를 추정하는 데 중점을 둡니다. "그림 (A): 분위수 회귀 분위수 회귀의 개념은 추정입니다. 회귀 변수 집합 X와 설명된 변수 Y의 분위수. 기존 회귀모형은 실제로 설명변수와 설명변수의 관계를 연구하기 위한 방법이다. 그들은 설명 변수와 설명 변수 사이의 관계에 중점을 둡니다.

Baidu 고급 검색을 사용하는 방법 Baidu 고급 검색을 사용하는 방법 Feb 22, 2024 am 11:09 AM

Baidu 고급 검색 사용 방법 Baidu 검색 엔진은 현재 중국에서 가장 일반적으로 사용되는 검색 엔진 중 하나이며, 그 중 하나가 고급 검색입니다. 고급 검색은 사용자가 필요한 정보를 보다 정확하게 검색하고 검색 효율성을 높이는 데 도움이 됩니다. 그렇다면 Baidu 고급 검색을 사용하는 방법은 무엇입니까? 첫 번째 단계는 Baidu 검색 엔진 홈페이지를 여는 것입니다. 먼저 Baidu의 공식 웹사이트인 www.baidu.com을 열어야 합니다. 바이두 검색에 들어가는 입구입니다. 두 번째 단계에서는 고급 검색 버튼을 클릭하세요. 바이두 검색창 오른쪽에

시계열 예측 + NLP 대규모 모델에 대한 새로운 작업: 시계열 예측을 위한 암시적 프롬프트 자동 생성 시계열 예측 + NLP 대규모 모델에 대한 새로운 작업: 시계열 예측을 위한 암시적 프롬프트 자동 생성 Mar 18, 2024 am 09:20 AM

오늘 저는 시계열 예측 성능을 향상시키기 위해 잠재 공간에서 시계열 데이터를 대규모 자연어 처리(NLP) 모델과 정렬하는 방법을 제안하는 코네티컷 대학의 최근 연구 작업을 공유하고 싶습니다. 이 방법의 핵심은 잠재 공간 힌트(프롬프트)를 사용하여 시계열 예측의 정확성을 높이는 것입니다. 논문 제목: S2IP-LLM: SemanticSpaceInformedPromptLearningwithLLMforTimeSeriesForecasting 다운로드 주소: https://arxiv.org/pdf/2403.05798v1.pdf 1. 큰 문제 배경 모델

Xianyu에서 사용자를 검색하는 방법 Xianyu에서 사용자를 검색하는 방법 Feb 24, 2024 am 11:25 AM

Xianyu는 어떻게 사용자를 검색하나요? 소프트웨어 Xianyu에서는 소프트웨어에서 소통하고 싶은 사용자를 직접 찾을 수 있습니다. 그런데 사용자를 검색하는 방법을 모르겠습니다. 검색 후 사용자들 사이에서 확인해보세요. 다음은 에디터가 사용자에게 제공하는 사용자 검색 방법에 대한 소개입니다. 관심이 있으신 분들은 꼭 들러보세요! Xianyu에서 사용자를 검색하는 방법 답변: 검색 후 사용자의 세부 정보를 봅니다. 소개: 1. 소프트웨어를 입력하고 검색 상자를 클릭합니다. 2. 사용자 이름을 입력하고 검색을 클릭하세요. 3. 검색창 아래의 [사용자]를 선택하여 해당 사용자를 찾으세요.

WPS 테이블에서 검색 중인 데이터를 찾을 수 없습니다. 검색 옵션 위치를 확인하세요. WPS 테이블에서 검색 중인 데이터를 찾을 수 없습니다. 검색 옵션 위치를 확인하세요. Mar 19, 2024 pm 10:13 PM

지능이 지배하는 시대에는 사무용 소프트웨어도 대중화되었으며, 유연성으로 인해 대다수의 직장인이 Wps 형식을 채택합니다. 직장에서는 간단한 양식 작성과 텍스트 입력뿐만 아니라 실제 업무를 완료하기 위해 더 많은 운영 기술을 습득해야 합니다. 데이터가 포함된 보고서와 양식을 사용하는 것이 더욱 편리하고 명확하며 정확합니다. 오늘 우리가 당신에게 전하는 교훈은: WPS 테이블이 당신이 찾고 있는 데이터를 찾을 수 없다는 것입니다. 왜 검색 옵션 위치를 확인해야 합니까? 1. 먼저 Excel 테이블을 선택하고 두 번 클릭하여 엽니다. 그런 다음 이 인터페이스에서 모든 셀을 선택합니다. 2. 그런 다음 이 인터페이스의 상단 도구 모음에 있는 "파일"에서 "편집" 옵션을 클릭합니다. 3. 둘째, 이 인터페이스에서 "

Java에서 특정 파일 확장자를 가진 디렉토리를 검색하는 방법은 무엇입니까? Java에서 특정 파일 확장자를 가진 디렉토리를 검색하는 방법은 무엇입니까? Aug 31, 2023 am 08:13 AM

다음 예에서는 확장자를 기반으로 디렉터리의 파일을 인쇄합니다. 예 importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.file.Paths;importjava.util.stream. 스트림; publicclassDemo{ publicstaticvoidmain(String[]args)throwsIOException{&nbsp

See all articles