TairTS adalah struktur data deret waktu yang dikembangkan berdasarkan modul Redis. Struktur ini menyediakan akses baca dan tulis dalam memori dengan latensi rendah dan konkurensi tinggi, mendukung kueri agregasi dan penyaringan cepat, serta menawarkan kemampuan penyimpanan dan komputasi. TairTS menyederhanakan pemrosesan data deret waktu dan secara signifikan meningkatkan performa.
Ikhtisar TairTS
Dibandingkan dengan RedisTimeSeries, TairTS menawarkan lebih banyak fitur:
Kueri agregat multi-timeline menggunakan pkeys. Pkeys memiliki lapisan hash tambahan.
Sebagai contoh, Anda dapat membuat beberapa skeys bernama berdasarkan nama metrik dan ID perangkat di pkey foo, seperti temperature:1, pressure:1, dan distance:1. Kemudian, Anda dapat menjalankan perintah EXTS.S.MRANGE yang disediakan oleh TairTS untuk mengambil data pemantauan kustom seperti skeys yang memiliki ID perangkat 1. Jika ingin mengimplementasikan fitur serupa menggunakan RedisTimeSeries, Anda harus memasukkan banyak kueri agregat ke dalam kode logika bisnis.
Gambar 1. Perbandingan antara TairTS dan RedisTimeSeries

Berikut adalah penjelasan tentang struktur data TairTS:
Pkey: sepotong data TairTS yang menunjukkan satu set timeline. Sebuah pkey terdiri dari beberapa skeys.
Skey: sebuah timeline. Sebuah skey terdiri dari beberapa chunk dengan kapasitas tetap. Anda dapat melampirkan satu atau lebih label berbeda pada setiap skey. Skeys dapat difilter berdasarkan label.
Chunk: potongan data. Sebuah chunk dapat menyimpan beberapa titik data.
Kapasitas setiap chunk dapat disesuaikan. Jika kompresi tidak diaktifkan, sebuah chunk dapat menyimpan hingga 256 titik data. Namun, jika kompresi diaktifkan, sebuah chunk dapat menyimpan lebih dari 256 titik data.
Chunk adalah unit kedaluwarsa terkecil. Sebuah chunk akan dihapus setelah semua titik data di dalamnya kedaluwarsa.
Datapoint: sepotong data deret waktu yang mencakup timestamp dan nilai tipe DOUBLE.
Kueri agregat dalam skenario seperti downsampling, penyaringan atribut, kueri batch, dan penggunaan fungsi numerik ganda. Fitur ini mengintegrasikan kueri batch dan agregasi menjadi satu perintah untuk mengurangi interaksi jaringan dan memberikan waktu respons satu digit milidetik.
Pembaruan dan akumulasi data deret waktu historis.
Dukungan untuk pengaturan TTL tingkat timeline memastikan bahwa setiap timeline dapat bergulir otomatis sesuai dengan jendela waktu.
Algoritma kompresi Gorilla yang efisien dan penyimpanan khusus untuk secara signifikan mengurangi biaya.
Skenario tipikal
Penyimpanan dan komputasi data yang dipantau.
Analisis data berdasarkan jendela waktu.
Analisis dan pemrosesan data untuk IoT.
Caching berita populer.
Pemantauan per detik untuk manajemen kinerja aplikasi (APM).
Pengendalian risiko dalam skenario throttling.
Praktik terbaik
Persiapan
Instans yang ingin Anda kelola adalah instans Tair DRAM-based instance.
Jika instans tersebut adalah instans DRAM-based yang kompatibel dengan Redis 5.0, versi minor dari instans tersebut harus 1.7.20 atau lebih baru.
Versi minor terbaru menyediakan lebih banyak fitur dan stabilitas yang lebih tinggi. Kami merekomendasikan agar Anda memperbarui instans ke versi minor terbaru. Untuk informasi lebih lanjut, lihat Perbarui versi minor dari sebuah instans. Jika instans Anda adalah instans kluster atau instans pemisahan baca/tulis, kami sarankan Anda memperbarui node proxy di instans ke versi minor terbaru untuk memastikan semua perintah dapat dijalankan sesuai harapan.
Catatan penggunaan
Data TairTS yang ingin Anda kelola disimpan di instans Tair.
TairTS mendukung penulisan dan kueri real-time dengan konkurensi tinggi namun menyediakan kapasitas penyimpanan yang terbatas. Kami menyarankan Anda menentukan TTL untuk data TairTS untuk memastikan data yang kedaluwarsa dihapus tepat waktu.
Perubahan besar:
Pada tanggal 22 Juli 2024, versi 24.7.0.0 dari instans Tair DRAM-based yang kompatibel dengan Redis 6.0 dirilis. Versi ini memperkenalkan parameter baru yang disebut ts-auto-del-empty-skey-enable, yang diatur ke yes secara default. Ini menunjukkan bahwa ketika semua titik data dalam sebuah skey kedaluwarsa, skey tersebut akan dihapus secara otomatis. Namun, pada versi sebelum 24.7.0.0 dari instans Tair DRAM-based yang kompatibel dengan Redis 6.0, skeys yang titik datanya kedaluwarsa tidak dihapus secara default.
Sebelum menggunakan TairTS pada instans Tair DRAM-based yang kompatibel dengan Redis 6.0, kami sarankan Anda meningkatkan instans ke versi 24.7.0.0 atau lebih baru, dan konfirmasi serta sesuaikan pengaturan parameter ts-auto-del-empty-skey-enable secara manual. Hal ini dapat mencegah dampak potensial apa pun terhadap bisnis Anda karena perubahan perilaku default.
Daftar Perintah
Tabel 1. Perintah TairTS
Tipe | Perintah | Sintaksis | Deskripsi |
Operasi penulisan dasar |
| Membuat pkey TairTS. Jika pkey dengan nama yang sama sudah ada, pkey tidak dapat dibuat. | |
| Membuat skey di pkey tertentu. Jika pkey tidak ada, maka akan dibuat secara otomatis. Jika skey dengan nama yang sama sudah ada, skey tidak dapat dibuat. Catatan Anda dapat menentukan parameter untuk skey, seperti waktu kedaluwarsa dan apakah akan mengaktifkan kompresi. | ||
| Memodifikasi metadata dari skey tertentu. Hanya nilai pengatur waktu DATA_ET yang dapat dimodifikasi. | ||
| Menyisipkan sebuah titik data ke dalam skey. Jika pkey atau skey tidak ada, maka pkey atau skey akan dibuat secara otomatis. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah kompresi diaktifkan, hanya berlaku jika skey dibuat secara otomatis. | ||
| Menyisipkan titik data ke dalam beberapa skeys dari sebuah pkey. Jika pkey atau skey tidak ada, maka pkey atau skey akan dibuat secara otomatis. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah kompresi diaktifkan, hanya berlaku jika skey dibuat secara otomatis. | ||
| Menyisipkan titik data ke dalam skey. Jika titik data yang ingin Anda sisipkan memiliki nilai positif, nilai yang disisipkan akan ditambahkan ke nilai dari titik data terakhir yang ada di skey. Jika titik data memiliki nilai negatif, nilai yang disisipkan akan dikurangkan dari nilai titik data terakhir yang ada di skey. Jika pkey atau skey tidak ada, pkey atau skey akan dibuat secara otomatis. Nilai awal default adalah 0. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah akan mengaktifkan kompresi, hanya berlaku jika skey dibuat secara otomatis ketika skey belum ada. | ||
| Menyisipkan titik data ke dalam beberapa skeys dari sebuah pkey. Jika titik data yang ingin Anda sisipkan memiliki nilai positif, nilai yang disisipkan akan ditambahkan ke nilai dari titik data terakhir yang ada di setiap skey. Jika titik data memiliki nilai negatif, nilai yang disisipkan akan dikurangkan dari nilai titik data terakhir yang ada di setiap skey. Jika pkey atau skey tidak ada, pkey atau skey akan dibuat secara otomatis. Nilai awal default adalah 0. Parameter untuk sebuah skey, seperti waktu kedaluwarsa dan apakah akan mengaktifkan kompresi, hanya berlaku jika skey dibuat secara otomatis ketika skey belum ada sebelumnya. | ||
| Menghapus skey dari pkey dan semua titik data dalam skey. | ||
Operasi baca dasar |
| Mengekueri nilai dari titik data terbaru dalam skey yang ditentukan. | |
| Meminta metadata dari skey tertentu. Metadata mencakup jumlah titik data, cap waktu dan nilai dari titik data terbaru, serta informasi label dari skey. | ||
| Mengeksekusi kueri untuk mendapatkan skeys yang memenuhi kondisi filter tertentu dalam sebuah pkey. | ||
Operasi agregat |
| Meminta jumlah titik data yang ada dalam sebuah skey selama rentang waktu tertentu. Rentang waktu merupakan interval tertutup. | |
| Mengeksekusi kueri jumlah titik data yang memenuhi kondisi filter tertentu di beberapa skeys selama rentang waktu tertentu. Rentang waktu merupakan interval tertutup. | ||
| Mengagregasi titik data dalam pkey yang memenuhi kondisi filter tertentu. Jika Anda menentukan satu atau lebih skeys untuk agregasi, skeys tersebut akan diagregasi terlebih dahulu dengan cara yang sama seperti saat menggunakan perintah EXTS.S.MRANGE. Kemudian, pkeys diagregasi berdasarkan hasil agregasi skey. | ||
Operasi penulisan bersamaan |
| Mengubah nilai dari sebuah titik data dalam skey tertentu. Jika pkey atau skey tidak ada, maka pkey atau skey akan dibuat secara otomatis. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah akan mengaktifkan kompresi, hanya berlaku jika skey dibuat secara otomatis. | |
| Memodifikasi nilai dari beberapa titik data dalam skey tertentu pada satu waktu. Jika pkey atau skey tidak ada, pkey atau skey akan dibuat secara otomatis. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah akan mengaktifkan kompresi, hanya berlaku jika skey dibuat secara otomatis. | ||
| Memodifikasi nilai dari sebuah titik data dalam skey tertentu. Anda dapat menentukan penambahan atau pengurangan untuk memodifikasi nilai tersebut. Jika pkey atau skey tidak ada, maka pkey atau skey akan dibuat secara otomatis. Nilai awal default adalah 0. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah akan mengaktifkan kompresi, hanya berlaku jika skey dibuat secara otomatis ketika skey belum ada sebelumnya. | ||
| Memodifikasi nilai dari beberapa titik data dalam sebuah skey tertentu sekaligus. Anda dapat menentukan penambahan atau pengurangan untuk memodifikasi nilai-nilai tersebut. Jika pkey atau skey tidak ada, maka pkey atau skey akan secara otomatis dibuat. Parameter untuk sebuah skey, seperti waktu kedaluwarsa dan apakah akan mengaktifkan kompresi, hanya berlaku jika skey secara otomatis dibuat ketika skey belum ada sebelumnya. | ||
Operasi tujuan umum |
| Menghapus satu atau lebih kunci TairTS. |
Daftar berikut menjelaskan konvensi sintaksis perintah yang digunakan dalam topik ini:
Kata kunci huruf besar: menunjukkan kata kunci perintah.Teks miring: menunjukkan variabel.[options]: menandakan bahwa parameter yang diapit bersifat opsional. Parameter yang tidak diapit oleh tanda kurung harus ditentukan.A|B: menunjukkan bahwa parameter yang dipisahkan oleh tanda batang vertikal (|) adalah saling eksklusif. Hanya satu dari parameter tersebut yang dapat ditentukan....: menunjukkan bahwa parameter sebelum simbol ini dapat ditentukan secara berulang.
EXTS.P.CREATE
Item | Description |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Membuat TairTS pkey. Jika pkey dengan nama yang sama sudah ada, pkey tidak dapat dibuat. |
Parameter |
|
Output |
|
Contoh | Perintah contoh: Output contoh: |
EXTS.S.CREATE
Item | Description |
Syntax |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Membuat skey di dalam pkey yang ditentukan. Jika pkey tidak ada, maka akan dibuat secara otomatis. Jika skey dengan nama yang sama sudah ada, skey tidak dapat dibuat. Catatan Anda dapat menentukan parameter untuk skey, seperti waktu kedaluwarsa dan apakah kompresi diaktifkan atau tidak. |
Parameter |
|
Output |
|
Contoh | Perintah contoh: Output contoh: |
EXTS.S.ALTER
Item | Description |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Memodifikasi metadata dari skey yang ditentukan. Hanya nilai waktu DATA_ET yang dapat dimodifikasi. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
EXTS.S.ADD
Item | Deskripsi |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Menyisipkan titik data ke dalam skey. Jika pkey atau skey tidak ada, pkey atau skey akan dibuat secara otomatis. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah kompresi diaktifkan, hanya berlaku jika skey dibuat secara otomatis. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
EXTS.S.MADD
Item | Description |
Syntax |
|
Kompleksitas waktu | O(n), di mana n menunjukkan jumlah skeys. |
Deskripsi perintah | Menyisipkan titik data ke dalam beberapa skeys dari sebuah pkey. Jika pkey atau skey tidak ada, pkey atau skey akan dibuat secara otomatis. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah kompresi diaktifkan, hanya berlaku jika skey dibuat secara otomatis. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
EXTS.S.INCRBY
Item | Description |
Syntax |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Menyisipkan sebuah titik data ke dalam skey. Jika titik data yang ingin Anda sisipkan memiliki nilai positif, nilai yang disisipkan akan ditambahkan ke nilai dari titik data terakhir yang ada di skey. Jika titik data memiliki nilai negatif, nilai yang disisipkan akan dikurangkan dari nilai titik data terakhir yang ada di skey. Jika pkey atau skey tidak ada, pkey atau skey akan dibuat secara otomatis. Nilai awal default adalah 0. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah kompresi diaktifkan, hanya berlaku jika skey dibuat secara otomatis ketika skey belum ada. |
Parameter |
|
Output |
|
Contoh | Jalankan perintah Contoh perintah: Contoh output: Jika perintah |
EXTS.S.MINCRBY
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(n), di mana n menunjukkan jumlah skeys. |
Deskripsi perintah | Memasukkan sebuah titik data ke dalam beberapa skeys dari sebuah pkey. Jika titik data yang ingin Anda masukkan memiliki nilai positif, nilai yang dimasukkan akan ditambahkan ke nilai dari titik data terakhir yang ada di setiap skey. Jika titik data memiliki nilai negatif, nilai yang dimasukkan akan dikurangkan dari nilai titik data terakhir yang ada di setiap skey. Jika pkey atau skey tidak ada, pkey atau skey akan dibuat secara otomatis. Nilai awal default adalah 0. Parameter untuk sebuah skey, seperti waktu kedaluwarsa dan apakah kompresi diaktifkan, hanya berlaku jika skey dibuat secara otomatis ketika skey belum ada. |
Opsi |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
EXTS.S.DEL
Item | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Menghapus skey dari pkey dan semua titik data dalam skey. |
Parameter |
|
Output |
|
Contoh | Perintah contoh: Output contoh: |
EXTS.S.GET
Item | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Mengambil nilai dari titik data terbaru dalam skey yang ditentukan. |
Parameter |
|
Output |
|
Contoh | Perintah contoh: Output contoh: |
EXTS.S.INFO
Item | Description |
Syntax |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Mengeksekusi kueri metadata dari skey tertentu. Metadata mencakup jumlah titik data, timestamp dan nilai dari titik data terbaru, serta informasi label dari skey. |
Opsi |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
EXTS.S.QUERYINDEX
Item | Description |
Syntax |
|
Kompleksitas waktu | O(n), di mana n menunjukkan jumlah maksimum set yang terlibat dalam kondisi filter. |
Deskripsi perintah | Mengecek skeys yang memenuhi kondisi filter tertentu dalam sebuah pkey. |
Parameter |
|
Output |
|
Contoh | Perintah contoh: Output contoh: |
EXTS.S.RANGE
Item | Description |
Syntax |
|
Kompleksitas waktu | O(n), di mana n menunjukkan jumlah chunk yang menjadi bagian dari titik data. |
Deskripsi perintah | Mengkueri jumlah titik data yang ada dalam skey selama rentang waktu tertentu. Rentang waktu adalah interval tertutup. |
Parameter |
|
Output |
|
Contoh | Perintah sampel: Output sampel: |
EXTS.S.MRANGE
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(n), di mana n menunjukkan jumlah chunk yang menjadi bagian dari titik data. |
Deskripsi perintah | Mengkueri jumlah titik data yang memenuhi kondisi filter tertentu dalam beberapa skeys selama rentang waktu tertentu. Rentang waktu adalah interval tertutup. |
Parameter |
|
Output |
|
Contoh | Perintah contoh: Output contoh: |
EXTS.P.RANGE
Item | Deskripsi |
Sintaksis |
|
Kompleksitas waktu | O(n), di mana n menunjukkan jumlah chunk yang menjadi bagian dari titik data. |
Deskripsi perintah | Mengagregasi titik data dalam sebuah pkey yang memenuhi kondisi filter tertentu. Jika Anda menentukan satu atau lebih skeys untuk agregasi, skeys tersebut akan terlebih dahulu di-aggregasi dengan cara yang sama seperti saat menggunakan perintah EXTS.S.MRANGE. Kemudian, pkeys di-aggregasi berdasarkan hasil agregasi skey. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
EXTS.S.RAW_MODIFY
Item | Deskripsi |
Sintaks |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Memodifikasi nilai dari sebuah titik data dalam skey yang ditentukan. Jika pkey atau skey tidak ada, maka pkey atau skey akan dibuat secara otomatis. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah kompresi diaktifkan, hanya berlaku jika skey dibuat secara otomatis. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
EXTS.S.RAW_MMODIFY
Item | Description |
Sintaksis |
|
Kompleksitas waktu | O(n), di mana n menunjukkan jumlah skeys. |
Deskripsi perintah | Memodifikasi nilai dari beberapa titik data dalam skey tertentu pada satu waktu. Jika pkey atau skey tidak ada, pkey atau skey akan dibuat secara otomatis. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah kompresi diaktifkan, hanya berlaku jika skey dibuat secara otomatis. |
Parameter |
|
Keluaran |
|
Contoh | Perintah contoh: Keluaran contoh: |
EXTS.S.RAW_INCRBY
Item | Deskripsi |
Sintaksis |
|
Kompleksitas waktu | O(1) |
Deskripsi perintah | Mengubah nilai dari sebuah titik data dalam skey yang ditentukan. Anda dapat menentukan penambahan atau pengurangan untuk memodifikasi nilainya. Jika pkey atau skey tidak ada, pkey atau skey akan dibuat secara otomatis. Nilai awal default adalah 0. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah kompresi diaktifkan, hanya berlaku jika skey dibuat secara otomatis ketika skey belum ada. |
Parameter |
|
Keluaran |
|
Contoh | Jalankan perintah Perintah contoh: Keluaran contoh: Jika perintah |
EXTS.S.RAW_MINCRBY
Item | Description |
Syntax |
|
Kompleksitas waktu | O(n), di mana n menunjukkan jumlah titik data. |
Deskripsi perintah | Memodifikasi nilai dari beberapa titik data dalam skey tertentu secara bersamaan. Anda dapat menentukan penambahan atau pengurangan untuk memodifikasi nilai tersebut. Jika pkey atau skey tidak ada, maka pkey atau skey akan dibuat secara otomatis. Parameter untuk skey, seperti waktu kedaluwarsa dan apakah kompresi diaktifkan, hanya berlaku jika skey dibuat secara otomatis ketika skey belum ada sebelumnya. |
Parameter |
|
Output |
|
Contoh | Perintah contoh: Output contoh: |
Sintaks penyaringan indeks
Skeys dapat disaring berdasarkan label. Sintaks berikut digunakan untuk kondisi filter.
Saat menentukan kondisi filter, Anda dapat menggunakan satu atau lebih dari perintah berikut dan harus menggunakan salah satu logika EQ, CONTAINS, dan LIST_MATCH.
Perintah Filter | Deskripsi | Logika |
| Label L sama dengan V. | EQ (sama dengan) |
| Label L tidak NULL, yang menunjukkan bahwa skey mengandung label L. | CONTAINS |
| Label L adalah v1, v2, atau nilai lainnya. | LIST_TMATCH |
| Label L tidak sama dengan V. | NOEQ (tidak sama dengan) |
| Label L adalah NULL, yang menunjukkan bahwa skey tidak mengandung label L. | NOCONTAINS |
| Nilai dari label L tidak cocok dengan salah satu nilai dalam daftar, seperti v1 atau v2. | LIST_NOTMATCH |
Sintaks agregasi
Dalam operasi agregasi, data yang ada selama interval yang ditentukan oleh parameter timeBucket diagregasi. Jenis agregasi berikut didukung:
MAX: mengembalikan nilai maksimum.MIN: mengembalikan nilai minimum.AVG: mengembalikan nilai rata-rata.SUM: mengembalikan jumlah semua nilai.FIRST: mengembalikan nilai pertama.LAST: mengembalikan nilai terakhir.RANGE: mengembalikan rentang dari nilai minimum hingga nilai maksimum.COUNT: mengembalikan jumlah nilai.STD.P: mengembalikan varians populasi.STD.S: mengembalikan varians sampel.VAR.P: mengembalikan simpangan baku populasi.VAR.S: mengembalikan simpangan baku sampel.
FAQ
P: Mengapa nilai default dari CHUNK_SIZE relatif kecil di beberapa instans Tair berbasis DRAM yang kompatibel dengan Redis 5.0?
J: Mulai versi 25.2.0.0, CHUNK_SIZE diatur menjadi 256 secara default. Di versi sebelumnya, CHUNK_SIZE diatur menjadi 32 secara default.