Artikel ini akan membolehkan anda bercakap tentang 8 strategi penyingkiran dalam cache Redis dan saya harap ia akan membantu semua orang!
Kami tahu bahawa Redis
cache menggunakan memori untuk menyimpan data, tetapi saiz memori adalah terhad Apabila jumlah data yang akan dicache menjadi lebih besar dan lebih besar. ruang cache yang terhad tidak boleh digunakan Pengelakan akan ditulis seluruhnya. Pada masa ini, strategi penghapusan cache diperlukan untuk memadamkan data. [Cadangan berkaitan: Tutorial video Redis]
Strategi penghapusan cache Redis
Strategi penghapusan Redis boleh ditentukan berdasarkan sama ada penghapusan data akan dijalankan. Mereka dibahagikan kepada dua kategori:
- Satu-satunya strategi yang tidak menghapuskan data ialah noeviction.
- 7 strategi lain untuk penyingkiran.
Ada 7 strategi yang akan dihapuskan kita boleh bahagikan lagi kepada dua kategori mengikut skop set data calon penyingkiran:
Selepas. tetapan tamat tempoh Dihapuskan daripada data masa, termasuk rawak meruap, meruap-ttl, meruap-lru, meruap-lfu (baru ditambah selepas Redis 4.0).
Hapuskan dalam semua julat data, termasuk allkeys-lru, allkeys-random, allkeys-lfu (baharu selepas Redis 4.0).
Sebelum redis3.0, lalai ialah volatile-lru
; selepas redis3.0 (termasuk 3.0), strategi penyingkiran lalai ialah noeviction
strategi noeviction
noeviction bermaksud tidak menghapuskan data Apabila data cache penuh dan permintaan tulis baharu masuk, Redis tidak akan menyediakan perkhidmatan lagi, tetapi akan kembali secara langsung.
Strategi penghapusan berdasarkan masa tamat
Empat strategi rawak meruap, ttl meruap, lru meruap dan lfu meruap adalah untuk mereka yang mempunyai masa tamat tetapkan pasangan nilai kunci. Apabila masa tamat tempoh pasangan nilai kunci dicapai atau penggunaan memori Redis mencapai ambang maxmemory
, Redis akan menghapuskan pasangan nilai kunci mengikut dasar ini; digunakan semasa menapis. Untuk pasangan nilai kunci dengan masa tamat tempoh, ia akan dipadamkan mengikut susunan masa tamat tempoh, lebih awal ia akan dipadamkan.
rawak meruap, sama seperti namanya, memadamkan pasangan nilai kunci secara rawak dengan masa tamat tempoh yang ditetapkan. - lru meruap akan menggunakan algoritma LRU untuk menapis pasangan nilai kunci dengan masa tamat tempoh.
- volatile-lfu akan menggunakan algoritma LFU untuk memilih pasangan nilai kunci dengan set masa tamat tempoh.
-
- Strategi penghapusan dalam semua julat data
allkeys-lru, allkeys-random, allkeys-lfu Julat data yang dihapuskan oleh ketiga-tiga strategi ini dikembangkan kepada semua Pasangan nilai kunci, tidak kira sama ada pasangan nilai kunci ini mempunyai masa tamat tempoh yang ditetapkan, peraturan untuk menapis data untuk penyingkiran ialah:
strategi rawak kekunci, memilih secara rawak dan Padam data ;
-
strategi allkeys-lru, menggunakan algoritma LRU untuk menapis semua data.
-
strategi allkeys-lfu, menggunakan algoritma LFU untuk menapis merentas semua data.
Mengenai algoritma LRU
Algoritma LRU ialah algoritma yang paling biasa digunakan baru-baru ini, kerana LRU menggunakan senarai terpaut untuk mengekalkan data yang digunakan list. Apabila lebih banyak data digunakan, ia akan mengambil lebih banyak masa untuk memindahkan elemen, yang pasti akan menjejaskan utas utama Redis. Atas sebab ini, Redis telah membuat beberapa penyederhanaan algoritma lru.
Idea teras strategi LRU: Jika sekeping data baru sahaja diakses, maka data tersebut mestilah data panas dan akan diakses semula.
Menurut idea teras ini, strategi LRU dalam Redis akan menetapkan medan lru dalam struktur RedisObject yang sepadan dengan setiap data untuk merekod cap waktu akses data. Apabila melakukan penghapusan data, strategi LRU akan menghapuskan data dengan nilai medan lru terkecil (iaitu, data dengan masa capaian paling lama) dalam set data calon.
Jadi, dalam senario perniagaan di mana data kerap diakses, strategi LRU sememangnya boleh mengekalkan data dengan berkesan dengan masa capaian terkini. Selain itu, kerana data yang disimpan akan diakses semula, kelajuan capaian aplikasi perniagaan boleh dipertingkatkan.
Kaedah khusus ialah apabila mengakses pasangan nilai kunci, redis akan merekodkan cap masa akses terkini. Apabila redis memutuskan untuk menghapuskan data, ia akan memilih N data secara rawak, menggunakannya sebagai set calon dan menapis cap masa terkecil. Apabila data dihapuskan pada kali seterusnya, data dengan nilai cap masa yang lebih kecil daripada set calon yang dipilih buat kali pertama akan dipilih dan dimasukkan ke dalam set calon baharu. Apabila data mencapai sampel memori maksimum, nilai terkecil akan dihapuskan.
Anda boleh menetapkan bilangan set calon yang dipilih melalui arahan ini
CONFIG SET maxmemory-samples N
Cadangan penggunaan
Mengikut ciri strategi, anda boleh memilih tetapan berbeza untuk strategi senario berbeza untuk menghapuskan data.
- Apabila tiada perbezaan yang jelas antara data panas dan sejuk dalam data cache, iaitu, tiada banyak perbezaan dalam kekerapan akses data, adalah disyorkan untuk menggunakan
allkeys-random
strategi rawak untuk menghapuskan data
- Apabila terdapat perbezaan yang jelas antara data panas dan sejuk, mata, disyorkan untuk menggunakan algoritma
allkeys-lru
atau volatile-lru
untuk menyimpan data yang paling terkini diakses dalam data cache; Apabila terdapat permintaan untuk data terkemuka dalam perniagaan, iaitu, data yang tidak akan tamat tempoh, jenis data ini secara amnya tidak digunakan Masa tamat tempoh akan ditetapkan, dan strategi boleh digunakan. Dengan cara ini, jenis data ini tidak akan dihapuskan, tetapi data lain boleh dihapuskan mengikut peraturan LRU. volatile-lru
Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati:
Pengenalan kepada Pengaturcaraan
! !
Atas ialah kandungan terperinci Analisis ringkas tentang 8 strategi penyingkiran dalam cache Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!