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 untuk maxfragmentationmemory-reserved. Anda dapat meningkatkan jumlah yang dicadangkan jika Anda memiliki beban tulis yang berat.

  • Pengaturan maxmemory-reserved mengkonfigurasi 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 untuk maxmemory-reserved adalah 10% - 60% dari maxmemory. 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 untuk maxfragmentationmemory-reserved adalah 10% - 60% dari maxmemory. 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 atau maxfragmentationmemory-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 nilai used_memory atau used_memory_rss Anda saat ini lebih tinggi dari batas baru 45 GB, maka sistem harus mengusir data hingga used_memory sekaligus used_memory_rss kurang dari 45 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 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, atau maxmemory-reservedmaxfragmentationmemory-reserved diabaikan sebagai bagian dari permintaan pembaruan. Hanya perubahan penyekalaan Anda yang diutamakan. Anda dapat memperbarui pengaturan memori ini setelah operasi penyekalaan selesai.

Langkah berikutnya