全部产品
Search
文档中心

Tair (Redis® OSS-Compatible):Kunci Besar dan Kunci Panas

更新时间:Nov 10, 2025

Kunci besar dan kunci panas dapat menurunkan performa layanan, menyebabkan waktu habis permintaan, atau bahkan mengakibatkan kegagalan sistem. Topik ini menjelaskan cara cepat menemukan dan mengoptimalkan kunci besar dan kunci panas, menganalisis penyebab serta dampaknya, dan memberikan langkah-langkah pencegahan untuk mengurangi dampaknya pada bisnis Anda.

Langkah 1: Cepat temukan kunci besar dan kunci panas

Alat konsol Alibaba Cloud

Tair dan Redis menyediakan fitur Statistik Kunci Teratas dan Analisis Penuh Kunci Offline di konsol untuk membantu Anda dengan cepat menemukan kunci besar dan kunci panas.

Metode

Batasan

Deskripsi

Prosedur

Statistik Kunci Teratas (Direkomendasikan)

Fitur ini hanya didukung oleh Redis Edisi Open-Source 5.0 atau lebih baru, dan instans yang dioptimalkan memori dan memori persisten dari Tair (Edisi Perusahaan).

  • Menampilkan informasi real-time tentang tiga kunci besar dan kunci panas teratas untuk setiap struktur data di setiap shard.

  • Memungkinkan Anda melihat informasi historis kunci besar dan kunci panas selama empat hari terakhir.

  1. Masuk ke konsol dan buka halaman Instans. Di bilah navigasi atas, pilih wilayah tempat instans yang ingin Anda kelola berada. Kemudian, temukan instans dan klik ID instans.

  2. Di panel navigasi di sebelah kiri, klik CloudDBA > Top Key Statistics atau Offline Full Key Analysis.

Analisis Penuh Kunci Offline

Fitur ini tidak didukung pada instans berbasis disk.

  • Melakukan analisis kustom file cadangan RDB untuk mendapatkan informasi seperti penggunaan memori, distribusi, dan waktu kedaluwarsa kunci.

  • Analisis ini tidak real-time dan bisa memakan waktu lama untuk file RDB besar.

  • Tidak dapat menganalisis informasi kunci panas.

Jika instans Anda tidak mendukung fitur-fitur ini, Anda dapat menggunakan metode berikut.

Metode lain untuk menemukan kunci besar dan kunci panas

Metode

Kelebihan dan Kekurangan

Deskripsi

Gunakan parameter bigkeys, memkeys, dan hotkeys dari redis-cli

  • Kelebihan: Nyaman, cepat, dan aman.

  • Kekurangan: Hasil analisis tidak dapat disesuaikan dan mungkin memiliki akurasi atau ketepatan waktu yang rendah. Metode ini melintasi semua kunci dalam instans, yang dapat memengaruhi performa.

Parameter bigkeys, memkeys, dan hotkeys dari redis-cli mengambil statistik keseluruhan kunci dan kunci besar atau panas teratas untuk setiap struktur data.

Perbedaan sebagai berikut:

  • bigkeys: Statistik untuk kunci besar. Untuk koleksi atau daftar, ia mengembalikan jumlah elemen.

  • memkeys: Statistik untuk kunci besar. Mengembalikan ukuran memori yang ditempati oleh nilai kunci.

  • hotkeys: Statistik untuk kunci panas.

Struktur data yang didukung: STRING, LIST, HASH, SET, ZSET, dan STREAM.

Sebagai contoh, perintah untuk bigkeys adalah redis-cli -h r-***************.redis.rds.aliyuncs.com -a <password> --bigkeys.

Menganalisis kunci target menggunakan perintah bawaan

  • Kelebihan: Dampak minimal pada layanan online.

  • Kekurangan: Panjang serial yang dikembalikan dari sebuah kunci tidak sama dengan panjang sebenarnya di memori. Oleh karena itu, hasilnya tidak presisi dan hanya boleh digunakan sebagai referensi.

Untuk kunci dengan struktur data yang berbeda, Anda dapat menggunakan perintah berisiko rendah berikut untuk menentukan apakah mereka adalah kunci besar.

  • Tipe STRING: Perintah STRLEN mengembalikan jumlah byte dari nilai untuk kunci yang sesuai.

  • Tipe LIST: Perintah LLEN mengembalikan panjang daftar untuk kunci yang sesuai.

  • Tipe HASH: Perintah HLEN mengembalikan jumlah anggota untuk kunci yang sesuai.

  • Tipe SET: Perintah SCARD mengembalikan jumlah anggota untuk kunci yang sesuai.

  • Tipe ZSET: Perintah ZCARD mengembalikan jumlah anggota untuk kunci yang sesuai.

  • Tipe STREAM: Perintah XLEN mengembalikan jumlah anggota untuk kunci yang sesuai.

Catatan

Perintah DEBUG OBJECT dan MEMORY USAGE sangat intensif sumber daya dan memiliki kompleksitas waktu O(N). Mereka dapat memblokir instans dan tidak direkomendasikan.

Lokalisasi kunci panas di lapisan bisnis

  • Kelebihan: Secara akurat dan tepat waktu melokalisasi kunci panas.

  • Kekurangan: Meningkatkan kompleksitas kode bisnis dan mungkin sedikit menurunkan performa.

Anda dapat menambahkan kode di lapisan bisnis untuk mencatat akses instans dan melakukan analisis asinkron.

Gunakan alat redis-rdb-tools untuk analisis kustom kunci besar

  • Kelebihan: Mendukung analisis kustom tanpa dampak pada layanan online.

  • Kekurangan: Analisis ini tidak real-time dan bisa memakan waktu lama untuk file RDB besar.

Redis-rdb-tools adalah alat open-source yang ditulis dalam Python yang mendukung analisis kustom file snapshot RDB. Setelah Anda mengunduh file RDB, Anda dapat menganalisis penggunaan memori semua kunci dalam instans dan melakukan kueri fleksibel sesuai kebutuhan.

Temukan kunci panas menggunakan perintah MONITOR

  • Kelebihan: Nyaman dan aman.

  • Kekurangan: Mengonsumsi sumber daya CPU, memori, dan jaringan. Hasilnya mungkin tidak tepat waktu atau akurat.

Perintah MONITOR mencetak semua permintaan yang dikirim ke instans, termasuk waktu, informasi klien, perintah, dan informasi kunci.

Dalam keadaan darurat, Anda dapat menjalankan perintah MONITOR secara singkat dan menyimpan output ke file. Setelah menghentikan perintah MONITOR, Anda dapat menganalisis permintaan dalam file tersebut untuk mengidentifikasi kunci panas selama periode itu.

Catatan

Karena perintah MONITOR dapat secara signifikan menurunkan performa instans, jangan gunakan perintah MONITOR kecuali dalam keadaan khusus.

Langkah 2: Optimalkan kunci besar dan kunci panas

Kunci besar

Solusi

Skenario

Tindakan yang Direkomendasikan

Bersihkan Data yang Kedaluwarsa

Sejumlah besar data yang kedaluwarsa telah terakumulasi, seperti data inkremental yang tidak dibersihkan dalam HASH.

Anda dapat menggunakan perintah HSCAN dengan perintah HDEL untuk membersihkan data yang tidak valid. Ini mencegah instans dari pemblokiran, yang dapat terjadi saat Anda membersihkan sejumlah besar data sekaligus.

Kompres Kunci Besar

Data yang dapat dikompres seperti teks JSON dan XML, termasuk log dan konfigurasi.

  • Anda dapat mengaktifkan kompresi selama serialisasi, seperti GZIP atau Snappy.

  • Anda dapat menggunakan protokol serialisasi biner, seperti Protocol Buffers.

Catatan

Operasi kompresi dan dekompresi mengonsumsi sumber daya CPU tambahan dan dapat memengaruhi performa pemrosesan.

Pisahkan Kunci Besar

Struktur data yang sering diakses seperti HASH, ZSET, dan lainnya, seperti papan peringkat.

  • Anda dapat membagi kunci berdasarkan logika bisnis, seperti berdasarkan ID pengguna atau rentang waktu.

  • Anda dapat menggunakan desain kunci sharding, seperti user:1001:shard1 dan user:1001:shard2.

Memisahkan kunci besar dapat secara efektif mencegah kesenjangan data.

Pindahkan Kunci Besar

File besar atau Binary Large Objects (BLOB) dari tipe String.

Anda dapat menyimpan data yang tidak sesuai di sistem penyimpanan lain, seperti OSS, dan menghapusnya dari instans.

  • Untuk Redis Edisi Open-Source 4.0 dan yang lebih baru: Anda dapat menggunakan perintah UNLINK untuk menghapus kunci besar atau bahkan kunci super besar dengan aman. Perintah ini membersihkan kunci secara asinkron untuk menghindari pemblokiran thread utama.

  • Untuk versi sebelum Redis Edisi Open-Source 4.0: Anda dapat menggunakan perintah SCAN untuk melintasi dan menghapus data dalam batch. Ini menghindari pemblokiran thread utama yang dapat disebabkan oleh menghapus banyak kunci sekaligus.

Tombol pintas

Solusi

Skenario

Tindakan yang Direkomendasikan

Replikasi Kunci Panas dalam Arsitektur Kluster

Kunci panas disimpan secara keseluruhan di satu shard, dan permintaan tidak dapat didistribusikan dengan memigrasi sebagian data.

Salin kunci panas dan migrasikan replikanya ke shard data lain. Sebagai contoh, salin kunci panas bernama `foo` untuk membuat tiga kunci identik bernama `foo2`, `foo3`, dan `foo4`. Migrasikan ketiga kunci ini ke shard data lain untuk mengurangi tekanan pada shard data tunggal dengan kunci panas.

Catatan

Kekurangan dari solusi ini adalah Anda harus memodifikasi kode Anda untuk mempertahankan beberapa replika, dan sulit untuk memastikan konsistensi data di antara mereka. Misalnya, operasi pembaruan harus disinkronkan di semua replika. Gunakan solusi ini sebagai langkah sementara untuk meredakan masalah mendesak.

Aktifkan Pemisahan Baca/Tulis

Beban kerja dengan banyak bacaan dan sedikit penulisan

Jika beban permintaan baca masih tinggi setelah Anda mengaktifkan fitur ini, tambahkan lebih banyak node read-only untuk lebih mengurangi beban.

Catatan

Dalam skenario dengan volume permintaan yang sangat tinggi, sinkronisasi primer/sekunder akan memiliki latensi, yang dapat menyebabkan Anda membaca data kotor. Oleh karena itu, jangan aktifkan pemisahan baca/tulis dalam skenario dengan tekanan baca dan tulis tinggi dan persyaratan konsistensi data yang ketat.

Langkah 3: Cegah kunci besar dan kunci panas memengaruhi bisnis Anda

Penyebab kunci besar dan kunci panas

Dalam Tair dan Redis, unit minimum untuk distribusi data adalah sebuah kunci. Satu kunci disimpan di shard data tertentu dan tidak dipisah. Faktor-faktor seperti perencanaan bisnis yang tidak memadai, akumulasi data tidak valid, dan peningkatan tiba-tiba dalam volume akses semuanya dapat menyebabkan pembentukan kunci besar dan kunci panas dalam sebuah instans. Contohnya meliputi hal-hal berikut:

Kategori

Penyebab

Kunci besar

  • Menggunakan Tair dan Redis dalam skenario yang tidak sesuai, yang dapat menghasilkan nilai kunci yang terlalu besar. Sebagai contoh, menggunakan kunci tipe String untuk menyimpan data file biner besar.

  • Perencanaan dan desain yang tidak memadai sebelum bisnis diluncurkan. Anggota dalam kunci tidak dibagi secara wajar, menghasilkan jumlah anggota yang berlebihan di beberapa kunci.

  • Kegagalan untuk membersihkan data tidak valid secara berkala, menyebabkan anggota kunci tipe HASH terus bertambah.

  • Kegagalan kode pada sisi konsumen bisnis yang menggunakan kunci tipe LIST, menyebabkan anggota kunci yang sesuai hanya bertambah.

Pintasan Keyboard

  • Peningkatan tajam tak terduga dalam volume akses. Contohnya termasuk produk populer mendadak, berita viral dengan lalu lintas melonjak, acara streamer di saluran langsung yang menghasilkan banyak suka, atau pertempuran antara beberapa guild dalam game yang melibatkan banyak pemain di area tertentu.

Dampak kunci besar dan kunci panas

Kategori

Dampak

Kunci besar

  • Memperlambat eksekusi perintah pada klien.

  • Ketika memori instans mencapai batas maxmemory, ini dapat menyebabkan operasi terblokir, kunci penting dievakuasi, atau bahkan kesalahan kehabisan memori (OOM).

  • Dalam arsitektur kluster, penggunaan memori satu shard data jauh melebihi yang lain, mencegah penggunaan memori yang seimbang di seluruh shard.

  • Menjalankan permintaan baca pada kunci besar dapat memenuhi lebar pita jaringan instans, memperlambat layanannya sendiri dan memengaruhi layanan terkait.

  • Menghapus kunci besar dapat dengan mudah memblokir database utama untuk waktu yang lama, yang dapat memicu pemutusan sinkronisasi atau failover primer/sekunder.

Tombol Pintas

  • Mengonsumsi sejumlah besar sumber daya CPU dan dapat meningkatkan penggunaan lebar pita jaringan, yang memengaruhi permintaan lain dan mengurangi performa keseluruhan.

  • Dalam arsitektur kluster, ini menyebabkan kesenjangan akses, di mana satu shard data diakses secara berlebihan sementara yang lain menganggur. Hal ini dapat menyebabkan masalah seperti kehabisan batas koneksi untuk shard tersebut dan menolak permintaan koneksi baru.

  • Dalam skenario penjualan kilat, volume permintaan untuk kunci inventaris produk dapat melebihi kapasitas pemrosesan instans, yang mengarah pada overselling.

  • Jika tekanan permintaan pada kunci panas melebihi kapasitas instans, hal itu dengan mudah dapat menyebabkan kerusakan cache. Ini berarti banyak permintaan diarahkan ke lapisan penyimpanan backend, menyebabkan lonjakan akses penyimpanan atau bahkan kerusakan, yang pada gilirannya memengaruhi layanan lainnya.

Strategi pencegahan

Strategi

Deskripsi

Konfigurasikan pemantauan dan peringatan

Tetapkan ambang batas peringatan yang wajar untuk metrik seperti penggunaan CPU, penggunaan memori, dan Koneksi. Sebagai contoh, atur peringatan ketika penggunaan memori melebihi 70% atau ketika memori bertambah lebih dari 20% dalam satu jam. Ketika peringatan dipicu, ikuti instruksi di Langkah 1 dan Langkah 2 dari topik ini untuk menemukan dan mengoptimalkan kunci besar dan kunci panas. Ini menyelesaikan masalah sebelum memengaruhi bisnis Anda.

Gunakan Tair (Edisi Perusahaan) untuk menghindari pembersihan data tidak valid

Untuk skenario yang melibatkan kunci besar tipe hash, Tair (Edisi Perusahaan) menyediakan struktur data yang ditingkatkan, TairHash. Ini mendukung pengaturan waktu kedaluwarsa dan versi untuk setiap bidang. Dengan menggunakan TairHash secara benar, Anda dapat secara signifikan mengurangi beban O&M, menyederhanakan kompleksitas kode bisnis, dan secara efektif menangani masalah yang disebabkan oleh kunci besar dan kunci panas.