Bagikan melalui


Manajemen memori

Penting

Azure Cache for Redis mengumumkan garis waktu penghentiannya untuk semua SKU. Sebaiknya pindahkan instans Azure Cache for Redis yang ada ke Azure Managed Redis sesegera mungkin.

Untuk informasi lebih lanjut tentang pengakhiran layanan:

Artikel ini menjelaskan praktik terbaik untuk manajemen memori di Azure Cache for Redis.

Pilih kebijakan pengeluaran yang tepat

Pilih kebijakan pengeluaran yang berfungsi untuk aplikasi Anda. Kebijakan default untuk Azure Cache for Redis adalah volatile-lru, yang berarti bahwa hanya kunci yang memiliki nilai time to live (TTL) yang ditetapkan dengan perintah seperti EXPIRE yang memenuhi syarat untuk pengeluaran. Jika tidak ada kunci yang memiliki nilai TTL, sistem tidak mengeluarkan kunci apa pun. Jika Anda ingin sistem mengizinkan kunci apa pun dihapus saat berada di bawah tekanan memori, pertimbangkan kebijakan allkeys-lru.

Mengatur tanggal kedaluwarsa kunci

Pengusiran karena tekanan memori dapat menyebabkan beban tambahan pada server Anda. Atur nilai kedaluwarsa pada kunci Anda untuk menghapus kunci secara proaktif alih-alih menunggu sampai ada tekanan memori. Untuk informasi selengkapnya, lihat dokumentasi untuk perintah Redis EXPIRE dan EXPIREAT .

Minimalkan fragmentasi memori

Nilai kunci besar dapat membuat memori terfragmentasi saat pengeluaran dan dapat menyebabkan penggunaan memori dan beban server yang tinggi.

Pantau penggunaan memori

Pantau penggunaan memori untuk memastikan bahwa Anda tidak kehabisan memori. Buat pemberitahuan untuk memberi Anda kesempatan untuk menskalakan cache Anda sebelum masalah terjadi.

Konfigurasikan pengaturan maxmemory-reserved Anda

Konfigurasikan pengaturan maxmemory-reserved Anda untuk memaksimalkan respons sistem. Pengaturan reservasi yang memadai sangat penting untuk beban kerja tulis-berat, atau jika Anda menyimpan nilai 100 KB atau lebih di cache Anda.

  • Pengaturan maxmemory-reserved mengonfigurasi jumlah memori, dalam MB per instans dalam kluster, yang dicadangkan untuk operasi non-cache seperti replikasi saat terjadi failover. Dengan mengatur nilai ini, Anda akan memiliki pengalaman server Redis yang lebih konsisten saat beban Anda bervariasi.

  • Pengaturan mengonfigurasi maxfragmentationmemory-reserved jumlah memori, dalam MB per instans dalam kluster, yang dicadangkan untuk mengakomodasi fragmentasi memori. Saat Anda menetapkan nilai ini, pengalaman server Redis lebih konsisten saat cache penuh atau hampir penuh dan rasio fragmentasi tinggi.

Ketika memori dicadangkan untuk operasi ini, memori tidak tersedia untuk menyimpan data yang di-cache. Secara default saat Anda membuat cache, sekitar 10% memori yang tersedia dicadangkan untuk maxmemory-reserved, dan 10% lainnya dicadangkan untuk maxfragmentationmemory-reserved. Anda dapat meningkatkan jumlah yang dicadangkan jika Anda memiliki beban penulisan yang berat.

Rentang yang diizinkan untuk maxmemory-reserved dan untuk maxfragmentationmemory-reserved adalah 10%-60% dari maxmemory. Jika Anda mencoba mengatur nilai-nilai ini lebih rendah dari 10% atau lebih tinggi dari 60%, nilai tersebut dievaluasi ulang dan diatur ke minimum 10% dan maksimum 60%.

Saat Anda menaikkan atau menurunkan skala cache, pengaturan maxmemory-reserved dan maxfragmentationmemory-reserved secara otomatis menskalakan secara proporsional dengan ukuran cache. Misalnya, jika maxmemory-reserved diatur ke 3 GB pada cache 6 GB, dan Anda menskalakan ke cache 12 GB, pengaturan secara otomatis diperbarui ke 6 GB selama penskalaan. Jika Anda menurunkan skala, kebalikannya terjadi.

Pertimbangkan bagaimana mengubah maxmemory-reserved nilai reservasi memori atau maxfragmentationmemory-reserved dapat memengaruhi cache dengan sejumlah besar data di dalamnya yang sudah berjalan. Misalnya, jika Anda memiliki cache 53 GB dengan nilai yang dipesan ditetapkan pada minimum 10%, memori maksimum yang tersedia untuk sistem adalah sekitar 42 GB. Jika nilai Anda saat ini used_memory atau used_memory_rss lebih tinggi dari 42 GB, sistem harus mengeluarkan data hingga keduanya used_memory dan used_memory_rss berada di bawah 42 GB.

Pengeluaran dapat meningkatkan beban server dan fragmentasi memori. Untuk informasi selengkapnya tentang metrik cache seperti used_memory dan used_memory_rss, lihat Membuat metrik Anda sendiri.

Catatan

Saat Anda meningkatkan atau menurunkan skala cache secara terprogram dengan menggunakan Azure PowerShell, Azure CLI, atau REST API, semua yang disertakan maxmemory-reserved atau maxfragmentationmemory-reserved pengaturan diabaikan sebagai bagian dari permintaan pembaruan. Hanya perubahan penyekalaan Anda yang diutamakan. Anda dapat memperbarui pengaturan memori setelah operasi penskalakan selesai.