Singkatnya - untuk setiap objek redis, ada waktu kedaluwarsa. Kecuali Anda mengatur objek untuk kedaluwarsa, waktu itu "tidak pernah".
Sekarang, mekanisme kedaluwarsanya sendiri semi-malas. Kedaluwarsa yang lambat berarti Anda tidak benar-benar kedaluwarsa objek sampai dibaca. Saat membaca suatu objek, kami memeriksa stempel waktu kedaluwarsanya, dan jika sudah lewat, kami tidak mengembalikan apa pun, dan menghapus objek saat kami melakukannya. Tapi masalahnya adalah jika kunci tidak pernah disentuh, itu hanya menghabiskan memori tanpa alasan.
Jadi Redis menambahkan lapisan kedua kedaluwarsa aktif acak. Itu hanya membaca kunci acak sepanjang waktu, dan ketika kunci kedaluwarsa disentuh, itu dihapus berdasarkan mekanisme malas. Ini tidak memengaruhi perilaku kedaluwarsa, itu hanya menambahkan "pengumpulan sampah" dari kunci kedaluwarsa.
Tentu saja implementasi yang sebenarnya lebih rumit dari ini, tetapi ini adalah ide utamanya.
Anda dapat membaca lebih lanjut di sini:http://redis.io/commands/expire
Dan kode sumber untuk siklus kedaluwarsa aktif dapat ditemukan di sini:https://github.com/antirez/redis/blob/a92921da135e38eedd89138e15fe9fd1ffdd9b48/src/expire.c#L98