All Products
Search
Document Center

Tair (Redis® OSS-Compatible):Percepat kueri multi-kolom menggunakan TairSearch

Last Updated:Jun 22, 2026

TairSearch adalah sistem pencarian real-time berbasis memori penuh yang mengintegrasikan caching dan komputasi. Mekanisme indeks terbalik (inverted index) intinya tidak hanya mendukung kueri pencocokan kabur (fuzzy matching) pada akar kata, tetapi juga memungkinkan TairSearch berfungsi sebagai penyimpan data hot. Integrasi komputasi dan penyimpanan ini mempercepat kueri multi-kolom di berbagai kolom sekaligus.

Informasi latar belakang

Banyak aplikasi menyimpan data utama dalam database relasional seperti MySQL. Untuk mengurangi beban database dan meningkatkan performa, pengembang sering menambahkan sistem cache KV seperti Redis guna menangani kueri data hot. Namun, ketika kasus penggunaan memerlukan kueri multi-kolom atau kueri pencocokan kabur dengan operator LIKE di database, sistem cache KV standar tidak mampu menangani skenario tersebut secara mandiri. Hal ini memerlukan mekanisme tambahan untuk filtering dan pencocokan, seperti skrip Lua atau komputasi eksternal, demi menjalankan kueri multi-kolom.

Keterbatasan sistem cache KV dalam skenario kueri multi-kolom

Saat mengimpor data dari database relasional ke sistem cache KV seperti Redis, Anda biasanya menyimpan setiap baris dalam Redis Hash. Kunci primer baris tersebut menjadi kunci hash Redis, sedangkan nama dan nilai kolom lainnya menjadi bidang dan nilai dalam hash tersebut.

Anda dapat langsung mengambil bidang tertentu berdasarkan kunci primer menggunakan perintah Redis HMGET. Namun, database relasional tidak hanya memiliki kunci primer, tetapi juga beberapa indeks sekunder serta berbagai indeks multi-kolom untuk meningkatkan efisiensi kueri. Redis memiliki keterbatasan signifikan dalam skenario berikut:

  • Kueri indeks sekunder: Redis tidak mendukung kueri hash berdasarkan nilai bidangnya. Oleh karena itu, Anda harus membuat indeks terpisah di Redis untuk memetakan nilai indeks sekunder kembali ke kunci primer. Solusi ini meningkatkan kompleksitas impor data dan menyebabkan pemborosan memori akibat redundansi data.

  • Kueri multi-kolom: Redis tidak mendukung kueri hash berdasarkan beberapa nilai bidang sekaligus. Anda harus mengimplementasikan kueri semacam ini sendiri, misalnya dengan skrip Lua atau logika aplikasi eksternal.

Topik ini menggunakan layanan pencarian tiket penerbangan selama lonjakan traffic sebagai contoh untuk menunjukkan bagaimana TairSearch mempercepat kueri multi-kolom.

Catatan

Untuk informasi lebih lanjut tentang TairSearch dan contoh perintahnya, lihat Search.

Pencarian penerbangan presisi

Pencarian penerbangan ke destinasi wisata populer dapat menyebabkan lonjakan traffic selama liburan panjang seperti musim panas, Hari Nasional, dan Festival Musim Semi. Untuk mengatasi lonjakan tersebut, Anda dapat menyimpan semua informasi penerbangan mendatang di TairSearch.

Langkah 1: Buat indeks dokumen

Di platform pemesanan penerbangan umum, pencarian penerbangan presisi melibatkan beberapa kriteria utama: keberangkatan, tujuan, tanggal perjalanan, kelas kursi, dan apakah penumpang bepergian bersama anak atau bayi.

Dalam contoh ini, nama indeks TairSearch (departure_destination) merupakan gabungan lokasi keberangkatan dan tujuan, misalnya zhuhai_hangzhou. Bidang indeks berikut dibuat: keberangkatan (departure), tujuan (destination), tanggal (date), kursi (seat), apakah bepergian bersama anak atau bayi (with), ID penerbangan (flight_id), harga (price), waktu keberangkatan (departure_time), dan waktu kedatangan (destination_time).

Catatan

Untuk menambah atau mengubah bidang, jalankan perintah TFT.UPDATEINDEX.

Contoh perintah:

TFT.CREATEINDEX zhuhai_hangzhou '{
    "mappings":{
        "properties":{
            "departure":{"type":"keyword"},
            "destination":{"type":"keyword"},
            "date":{"type":"keyword"},
            "seat":{"type":"keyword"},
            "with":{"type":"keyword"},
            "flight_id":{"type":"keyword"},
            "price":{"type":"double"},
            "departure_time":{"type":"long"},
            "destination_time":{"type":"long"}
        }
    }
}'

Output yang diharapkan:

OK

Langkah 2: Tulis data

Tulis informasi penerbangan sebagai dokumen ke indeks TairSearch. Berikut contoh perintahnya:

TFT.ADDDOC zhuhai_hangzhou '{
    "departure":"zhuhai",
    "destination":"hangzhou",
    "date":"2022-09-01",
    "seat":"first",
    "with":"baby",
    "flight_id":"CZ1000",
    "price":986.1,
    "departure_time":1661991010,
    "destination_time":1661998210
}'

Output yang diharapkan:

"{"_id":"16615908912020060"}"
# Mengembalikan ID dokumen baru.

Langkah 3: Pencarian presisi

Untuk mencari penerbangan kelas pertama dari Zhuhai ke Hangzhou pada 1 September 2022, diurutkan berdasarkan waktu keberangkatan, jalankan perintah berikut:

TFT.Search zhuhai_hangzhou '{"sort":["departure_time"],"query":{"bool":{"must":[{"term":{"date":"2022-09-01"}},{"term":{"seat":"first"}}]}}}'

Output yang diharapkan:

"{
    "hits": {
        "hits": [
            {
                "_id": "16615908912020060",
                "_index": "zhuhai_hangzhou",
                "_score": 0.433955,
                "_source": {
                    "departure": "zhuhai",
                    "destination": "hangzhou",
                    "date": "2022-09-01",
                    "seat": "first",
                    "with": "baby",
                    "flight_id": "CZ1000",
                    "price": 986.1,
                    "departure_time": 1661991010,
                    "destination_time": 1661998210
                }
            }
        ],
        "max_score": 0.433955,
        "total": {
            "relation": "eq",
            "value": 1
        }
    }
}"