Manajemen memori
Kebijakan pengeluaran
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 set nilai TTL dengan perintah seperti EXPIRE yang memenuhi syarat untuk pengusiran. Jika tidak ada kunci yang memiliki nilai TTL, maka sistem tidak akan mengeluarkan kunci apa pun. Jika Anda ingin sistem mengizinkan kunci apa pun dikeluarkan jika berada di bawah tekanan memori, maka Anda mungkin ingin mempertimbangkan kebijakan allkeys-lru
.
Kedaluwarsa kunci
Menetapkan nilai kedaluwarsa pada kunci Anda. Kedaluwarsa menghapus kunci secara proaktif alih-alih menunggu sampai ada tekanan memori. Ketika pengusiran terjadi karena tekanan memori, itu dapat menyebabkan lebih banyak beban pada server Anda. Untuk informasi selengkapnya, lihat dokumentasi untuk perintah EXPIRE dan EXPIREAT.
Minimalkan fragmentasi memori
Nilai-nilai besar dapat meninggalkan memori terfragmentasi pada penggusuran dan dapat menyebabkan penggunaan memori yang tinggi dan beban server.
Pantau penggunaan memori
Tambahkan pemantauan pada penggunaan memori untuk memastikan bahwa Anda tidak kehabisan memori dan memiliki kesempatan untuk skala cache Anda sebelum melihat masalah.
Konfigurasikan pengaturan maxmemory-reserved Anda
Konfigurasikan setelan cadangan memori maksimum Anda untuk meningkatkan responsivitas sistem:
Pengaturan reservasi yang memadai sangat penting terutama untuk beban kerja tulis yang berat atau jika Anda menyimpan nilai 100 KB atau lebih dalam cache Anda. Secara default saat Anda membuat cache, sekitar 10% dari memori yang tersedia dicadangkan untuk
maxmemory-reserved
. 10% lainnya dicadangkan untukmaxfragmentationmemory-reserved
. Anda dapat meningkatkan jumlah yang dicadangkan jika Anda memiliki beban tulis yang berat.Pengaturan
maxmemory-reserved
mengonfigurasi jumlah memori, dalam MB per instans dalam kluster, yang dicadangkan untuk operasi non-cache, seperti replikasi selama failover. Dengan mengatur nilai ini, Anda akan memiliki pengalaman server Redis yang lebih konsisten saat beban Anda bervariasi. Nilai ini harus diatur lebih tinggi untuk beban kerja yang menulis data dalam jumlah besar. Saat memori disediakan untuk operasi tersebut, memori tidak tersedia untuk penyimpanan data cache. Rentang yang diizinkan bagimaxmemory-reserved
adalah sebesar 10% - 60% darimaxmemory
. Jika Anda mencoba mengatur nilai ini lebih rendah dari 10% atau lebih tinggi dari 60%, nilai tersebut akan dievaluasi ulang serta diatur ke minimum 10% dan maksimum 60%. Nilai dirender dalam megabyte.Pengaturan
maxfragmentationmemory-reserved
mengonfigurasi jumlah memori, dalam MB per instans dalam kluster, yang disediakan untuk mengakomodasi fragmentasi memori. Saat Anda menetapkan nilai ini, pengalaman server Redis lebih konsisten saat cache penuh atau hampir penuh dan rasio fragmentasi tinggi. Saat memori disediakan untuk operasi tersebut, memori tidak tersedia untuk penyimpanan data cache. Rentang yang diizinkan bagimaxfragmentationmemory-reserved
adalah sebesar 10% - 60% darimaxmemory
. Jika Anda mencoba mengatur nilai ini lebih rendah dari 10% atau lebih tinggi dari 60%, nilai tersebut akan dievaluasi ulang serta diatur ke minimum 10% dan maksimum 60%. Nilai dirender dalam megabyte.Satu hal yang perlu dipertimbangkan saat memilih nilai reservasi memori baru (
maxmemory-reserved
ataumaxfragmentationmemory-reserved
) adalah bagaimana perubahan ini dapat memengaruhi cache dengan sejumlah besar data di dalamnya yang sudah berjalan. Misalnya, jika Anda memiliki cache 53 GB dengan data 49 GB dan kemudian mengubah nilai reservasi menjadi 8 GB, memori maksimum yang tersedia untuk sistem akan turun menjadi 45 GB. Jika nilaiused_memory
atauused_memory_rss
Anda saat ini lebih tinggi dari batas baru 45 GB, maka sistem harus mengusir data hinggaused_memory
sekaligusused_memory_rss
kurang dari 45 GB. Pengeluaran dapat meningkatkan beban server dan fragmentasi memori. Untuk informasi selengkapnya tentang metrik cache sepertiused_memory
danused_memory_rss
, lihat Membuat metrik Anda sendiri.
Catatan
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 akan diperbarui secara otomatis ke 6 GB selama penskalaan. Ketika Anda menurunkan skala, kebalikannya terjadi.
Saat Anda menskalakan cache ke atas atau ke bawah secara terprogram, menggunakan PowerShell, CLI, atau Rest API, apa pun maxmemory-reserved
atau maxfragmentationmemory-reserved
diabaikan sebagai bagian dari permintaan pembaruan. Hanya perubahan penyekalaan Anda yang diutamakan. Anda dapat memperbarui pengaturan memori ini setelah operasi penyekalaan selesai.