Rumah  >  Artikel  >  pangkalan data  >  Tiga kaedah strategi pemadaman Redis dan analisis contoh algoritma pengusiran

Tiga kaedah strategi pemadaman Redis dan analisis contoh algoritma pengusiran

PHPz
PHPzke hadapan
2023-06-02 13:43:341523semak imbas

1. Kata Pengantar

Sebelum artikel bermula, izinkan saya bertanyakan soalan kepada anda: Apabila kita menggunakan arahan: expire key secondTetapkan masa tamat tempoh untuk kunci Setelah tamat tempoh, yang sepadan kunci 过期数据Adakah ia benar-benar dipadamkan serta-merta oleh pelayan? Jawapannya ialah ia tidak akan dipadam serta merta. Mengetahui jawapan ini, mari kita lihat cara data yang telah tamat tempoh dikendalikan dalam Redis.

2. Ciri-ciri data dalam Redis

Redis ialah pangkalan data peringkat memori Semua data disimpan dalam ingatan boleh mendapatkan statusnya melalui arahan TTL Terdapat tiga negeri:

3. Struktur storan data sensitif masa

Tiga kaedah strategi pemadaman Redis dan analisis contoh algoritma pengusiran

Apabila kami menggunakan arahan untuk menetapkan data tamat tempoh, alamat yang sepadan dengan data akan diletakkan dalam ruang tamat tempoh, dan kaedah penyimpanan ialah hash , nilai yang disimpan ialah masa tamat tempoh.

4. Strategi pemadaman data

数据删除策略目标:Cari keseimbangan antara penggunaan memori dan penggunaan CPU Kegagalan untuk mempertimbangkan satu atau yang lain akan mengakibatkan penurunan dalam prestasi redis keseluruhan masa mati pelayan atau kebocoran memori tugas pemasa akan segera melaksanakan pemadaman kekunci

  • Kelebihan:

    Simpan memori, padamkannya apabila tiba masanya dan lepaskan penggunaan memori yang tidak perlu dengan cepat

  • Kelemahan: CPU berada di bawah tekanan yang hebat Tidak kira berapa tinggi beban CPU pada masa ini, ia akan menduduki CPU, yang akan menjejaskan tindak balas pelayan redis. masa dan penghantaran arahan

  • 2 pemadaman malas

Data tidak akan diproses apabila ia sampai. masa tamat tempoh. Pada kali berikutnya data diakses, fungsi Tiga kaedah strategi pemadaman Redis dan analisis contoh algoritma pengusiran akan dipanggil untuk menentukan sama ada data telah tamat tempoh: Jika ia belum tamat tempoh, pulangkan data, cari ia telah tamat tempoh, padamkannya, kembalikan tidak wujud

  • Kelebihan:

    Simpan prestasi CPU, hanya padam apabila anda mendapati perlu untuk memadam expireIfNeeded()

  • Kelemahan: Tekanan memori adalah sangat tinggi, dan data yang menduduki memori untuk masa yang lama muncul

  • Pemadaman biasa

Tiga kaedah strategi pemadaman Redis dan analisis contoh algoritma pengusiran

Analisis proses:

Tiga kaedah strategi pemadaman Redis dan analisis contoh algoritma pengusiran

Apabila pelayan Redis bermula dan dimulakan, baca nilai pelayan konfigurasi.hz, lalai ialah 10

dan kemudian laksanakannya 10 kali sesaat
    Kaedah, kaedah ini digunakan untuk mengesan pelayan
  • kaedah akan memanggil kaedah

    , yang digunakan untuk melintasi pangkalan data Redis mempunyai 16 pangkalan data secara lalai, bermula dari Apabila pangkalan data bermula, kaedah serverCron()

  • akan memanggil. kaedah serverCron(), yang akan mengesan setiap databasesCron() satu demi satu, setiap kali melaksanakan 250ms/server.hz ​​Apabila mengesan

    tertentu, pilih kekunci W secara rawak untuk mengesan
  • Jika masa kunci tamat, padamkan kekunci jika bilangan kekunci dipadamkan dalam satu pusingan > W25% , gelungkan proses jika bilangan kekunci yang dipadam dalam satu pusingan ialah ≤W25%, semak seterusnya databasesCron(), gelung 0-15. Antaranya, nilai W = ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP nilai atribut activeExpireCycle()expires[*]expires[*]

    Jika masa pelaksanaan activeExpireCycle() tamat tempoh, pelaksanaan akan diteruskan dari current_db pada kali seterusnya
  • parameter current_db digunakan untuk merekod yang tamat tempoh [*] activeExpireCycle() masuk untuk melaksanakan expires[*]

  • secara berkala poll the redis library Data sensitif masa dalam pangkalan data menggunakan strategi pengekstrakan rawak dan menggunakan perkadaran data tamat tempoh untuk mengawal kekerapan pemadaman

Tiga kaedah strategi pemadaman Redis dan analisis contoh algoritma pengusiranTekanan memori tidak terlalu tinggi, dan data sejuk yang telah menduduki memori untuk masa yang lama akan Pembersihan berterusan

  • 5 Perbandingan strategi pemadaman总结:

    6. Algoritma Pengusiran

    1. Pengenalan Konsep

    Apabila data baharu memasuki redis, apakah yang perlu saya lakukan jika memori tidak mencukupi? Redis menggunakan memori untuk menyimpan data Sebelum melaksanakan setiap arahan, ia akan memanggil freeMemoryIfNeeded() untuk menyemak sama ada memori mencukupi. Jika memori tidak memenuhi keperluan storan minimum untuk data yang baru ditambah, redis akan memadam sementara beberapa data untuk mengosongkan ruang storan untuk arahan semasa. Strategi untuk membersihkan data dipanggil algoritma pengusiran.

    Nota: Proses membuang data tidak 100% dapat mengosongkan ruang memori yang boleh digunakan jika tidak berjaya, ia akan dilaksanakan berulang kali. Selepas mencuba semua data, jika keperluan pembersihan memori tidak dapat dipenuhi, mesej ralat akan muncul.

    Tiga kaedah strategi pemadaman Redis dan analisis contoh algoritma pengusiran

    2 Lapan konfigurasi

    Kesan data yang tidak menentu (可能会过期的数据集server.db[i].expires)

    volatile-lru 挑选最近最少使用的数据淘汰
    volatile-lfu 挑选最近使用次数最少的数据淘汰
    volatile-ttl 挑选将要过期的数据淘汰
    volatile-random 任意选择数据淘汰

    Kesan data pangkalan data penuh (所有数据集server.db[i].dict )

    allkeys-lru 挑选最近最少使用的数据淘汰
    allkeys-lfu 挑选最近使用次数最少的数据淘汰
    allkeys-random 任意选择数据淘汰

    Tinggalkan pembuangan data:

    no-enviction 禁止驱逐数据(redis4.0中默认策略)

Atas ialah kandungan terperinci Tiga kaedah strategi pemadaman Redis dan analisis contoh algoritma pengusiran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam