Apakah itu pemecahan memori Redis?
Jumlah jumlah ruang yang tinggal dalam sistem pengendalian adalah mencukupi, tetapi apabila memohon ruang dengan alamat berterusan N bait, tiada ruang berterusan N bait dalam ruang memori yang tinggal, maka baki yang tinggal ruang ingatan kurang daripada N Ruang ingatan bersebelahan bait ialah pemecahan memori.
Bagaimanakah pemecahan memori Redis terbentuk?
Terdapat sebab dalaman dan luaran untuk pembentukan pemecahan memori:
Sebab dalaman: Strategi peruntukan pengalokasi memori menentukan bahawa sistem pengendalian tidak dapat mencapai "pada -peruntukan permintaan".
Redis menggunakan libc, jemalloc dan tcmalloc untuk memperuntukkan memori Secara lalai, jemalloc digunakan.
Pengagih memori memperuntukkan ruang memori mengikut saiz tetap, tidak sepenuhnya mengikut saiz memori yang diminta oleh aplikasi.
Mengambil jemalloc sebagai contoh, ia membahagikan ruang memori mengikut satu siri saiz tetap, seperti 8 bait, 16 bait, 32 bait,..., 2KB, 4KB, dll. Jemalloc akan memperuntukkan ruang saiz tetap yang paling hampir dengan memori yang diminta oleh program.
Sebab luaran: Pasangan nilai kunci mempunyai saiz yang berbeza dan pasangan nilai kunci boleh diubah suai dan dipadamkan.
Apabila Redis memohon untuk peruntukan ruang memori, untuk keperluan ruang memori saiz yang berbeza, pengalokasi memori memperuntukkan ruang memori mengikut saiz tetap, dan ruang memori yang diperuntukkan secara amnya adalah lebih besar daripada ruang memori yang diminta Ruang memori lebih besar, yang akan menghasilkan pemecahan memori tertentu.
Pasangan nilai kunci akan diubah suai dan dipadamkan, yang akan membawa kepada pengembangan dan pelepasan ruang.
Bagaimana untuk menentukan sama ada Redis mempunyai pemecahan memori?
DAS menanyakan maklumat terperinci penggunaan memori melalui arahan INFO yang disediakan oleh Redis Perintahnya adalah seperti berikut:
INFO memory # Memory used_memory:350458970752 used_memory_human:326.39G used_memory_rss:349066919936 used_memory_rss_human:325.09G … mem_fragmentation_ratio:1.00
used_memory: Menunjukkan. bahawa Redis digunakan untuk menyimpan data Ruang memori sebenar yang diminta.
used_memory_rss: Menunjukkan ruang memori fizikal yang sebenarnya diperuntukkan oleh sistem pengendalian kepada Redis, yang termasuk serpihan ruang memori.
mem_fragmentation_ratio merujuk kepada kadar pemecahan memori semasa Redis. Formula pengiraan: mem_fragmentation_ratio=used_memory_rss/used_memory
mem_fragmentation_ratio lebih besar daripada atau sama dengan 1 tetapi kurang daripada atau sama dengan 1.5.
nisbah_pecah_mem lebih besar daripada 1.5, menunjukkan bahawa kadar pemecahan memori telah melebihi 50%.
Bagaimana untuk membersihkan serpihan memori?
Kaedah "mudah dan kasar" adalah untuk memulakan semula tika Redis. Tetapi kaedah ini akan membawa dua akibat:
Jika data dalam Redis tidak berterusan, data akan hilang; Redis data Sama ada ia berterusan atau tidak, kaedah AOF atau RDB perlu digunakan untuk memulihkan data, dan masa pemulihan bergantung pada saiz fail AOF atau RDB. Dan jika terdapat hanya satu contoh Redis, perkhidmatan tidak boleh disediakan semasa fasa pemulihan.
Adakah terdapat cara yang lebih baik? Ya, dari versi 4.0-RC3 dan seterusnya, Redis sendiri menyediakan kaedah untuk membersihkan serpihan memori secara automatik.
Pembersihan serpihan memori secara automatik
Pembersihan pecahan memori, dalam istilah mudah, bermaksud "bergerak untuk memberi laluan dan menggabungkan ruang".
Apabila terdapat data yang membahagikan ruang memori berterusan kepada beberapa ruang terputus, sistem pengendalian akan menyalin data ke tempat lain, dan ruang ingatan terputus asal menjadi ruang ingatan berterusan .
Tetapi defragmentasi memerlukan kos. Memindahkan berbilang salinan data ke lokasi baharu dan mengosongkan ruang asal adalah sesuatu yang mesti dilakukan oleh sistem pengendalian, tetapi proses ini memerlukan masa. Di samping itu, apabila data disalin, Redis akan disekat dan prestasi akan dikurangkan.
Bagaimana untuk mengurangkan masalah ini?
Redis secara khusus menyediakan tetapan parameter untuk mekanisme pembersihan pemecahan memori automatik. Anda boleh menetapkan parameter untuk mengawal masa mula dan tamat pembersihan pemecahan, serta perkadaran CPU yang diduduki, dengan itu mengurangkan kesan prestasi pembersihan pemecahan pada pemprosesan permintaan Redis.
Pertama, hidupkan pembersihan pemecahan memori automatik:
set konfigurasi activedefrag ya
Kemudian, tetapkan syarat untuk mencetuskan pembersihan memori:
active- defrag-ignore-bait 100mb: Menunjukkan bahawa apabila bilangan bait pemecahan memori mencapai 100MB, pembersihan akan bermula; ruang pemecahan memori menduduki peruntukan sistem pengendalian Apabila jumlah ruang yang diperuntukkan kepada Redis mencapai 10%, pembersihan bermula.
Akhir sekali, kawal had atas dan bawah perkadaran masa CPU yang diduduki oleh operasi pembersihan:
active-defrag-cycle-min 25: Menunjukkan pembersihan automatik Perkadaran masa CPU yang digunakan dalam proses adalah tidak kurang daripada 25% untuk memastikan pembersihan dapat diteruskan seperti biasa; Menunjukkan bahawa perkadaran masa CPU yang digunakan dalam proses pembersihan automatik adalah tidak tinggi Di atas 75%, apabila melebihi, pembersihan akan dihentikan untuk mengelakkan sejumlah besar salinan memori menyekat Redis semasa pembersihan, mengakibatkan peningkatan kependaman tindak balas.
Atas ialah kandungan terperinci Bagaimana untuk membersihkan serpihan memori Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Ciri -ciri utama Redis termasuk kelajuan, fleksibiliti dan sokongan struktur data yang kaya. 1) Kelajuan: Redis adalah pangkalan data dalam memori, dan membaca dan menulis operasi hampir seketika, sesuai untuk pengurusan cache dan sesi. 2) Fleksibiliti: Menyokong pelbagai struktur data, seperti rentetan, senarai, koleksi, dan lain -lain, yang sesuai untuk pemprosesan data yang kompleks. 3) Sokongan Struktur Data: Menyediakan rentetan, senarai, koleksi, jadual hash, dan lain -lain, yang sesuai untuk keperluan perniagaan yang berbeza.

Fungsi teras Redis adalah sistem penyimpanan dan pemprosesan data berprestasi tinggi. 1) Akses data berkelajuan tinggi: Redis menyimpan data dalam memori dan menyediakan kelajuan membaca dan menulis tahap mikrosecond. 2) Struktur Data Kaya: Menyokong rentetan, senarai, koleksi, dan lain -lain, dan menyesuaikan diri dengan pelbagai senario aplikasi. 3) Kegigihan: Data berterusan ke cakera melalui RDB dan AOF. 4) Menerbitkan langganan: boleh digunakan dalam beratur mesej atau sistem komunikasi masa nyata.

Redis menyokong pelbagai struktur data, termasuk: 1. String, sesuai untuk menyimpan data nilai tunggal; 2. Senarai, sesuai untuk beratur dan susunan; 3. Tetapkan, digunakan untuk menyimpan data yang tidak duplikasi; 4. Diarahkan set, sesuai untuk senarai ranking dan beratur keutamaan; 5. Jadual hash, sesuai untuk menyimpan objek atau data berstruktur.

Kaunter Redis adalah satu mekanisme yang menggunakan penyimpanan pasangan nilai utama REDIS untuk melaksanakan operasi pengiraan, termasuk langkah-langkah berikut: mewujudkan kekunci kaunter, meningkatkan tuduhan, mengurangkan tuduhan, menetapkan semula, dan mendapatkan tuduhan. Kelebihan kaunter Redis termasuk kelajuan cepat, konkurensi tinggi, ketahanan dan kesederhanaan dan kemudahan penggunaan. Ia boleh digunakan dalam senario seperti pengiraan akses pengguna, penjejakan metrik masa nyata, skor permainan dan kedudukan, dan pengiraan pemprosesan pesanan.

Gunakan alat baris perintah redis (redis-cli) untuk mengurus dan mengendalikan redis melalui langkah-langkah berikut: Sambungkan ke pelayan, tentukan alamat dan port. Hantar arahan ke pelayan menggunakan nama arahan dan parameter. Gunakan arahan bantuan untuk melihat maklumat bantuan untuk arahan tertentu. Gunakan perintah berhenti untuk keluar dari alat baris arahan.

Mod Redis cluster menyebarkan contoh Redis ke pelbagai pelayan melalui sharding, meningkatkan skalabilitas dan ketersediaan. Langkah -langkah pembinaan adalah seperti berikut: Buat contoh Redis ganjil dengan pelabuhan yang berbeza; Buat 3 contoh sentinel, memantau contoh redis dan failover; Konfigurasi fail konfigurasi sentinel, tambahkan pemantauan maklumat contoh dan tetapan failover; Konfigurasi fail konfigurasi contoh Redis, aktifkan mod kluster dan tentukan laluan fail maklumat kluster; Buat fail nodes.conf, yang mengandungi maklumat setiap contoh Redis; Mulakan kluster, laksanakan perintah Buat untuk membuat kluster dan tentukan bilangan replika; Log masuk ke kluster untuk melaksanakan perintah maklumat kluster untuk mengesahkan status kluster; buat

Untuk membaca giliran dari Redis, anda perlu mendapatkan nama giliran, membaca unsur -unsur menggunakan arahan LPOP, dan memproses barisan kosong. Langkah-langkah khusus adalah seperti berikut: Dapatkan nama giliran: Namakannya dengan awalan "giliran:" seperti "giliran: my-queue". Gunakan arahan LPOP: Keluarkan elemen dari kepala barisan dan kembalikan nilainya, seperti LPOP Queue: My-Queue. Memproses Baris kosong: Jika barisan kosong, LPOP mengembalikan nihil, dan anda boleh menyemak sama ada barisan wujud sebelum membaca elemen.

Penggunaan ZSET dalam Redis Cluster: ZSET adalah koleksi yang diperintahkan yang mengaitkan unsur -unsur dengan skor. Strategi Sharding: a. Hash Sharding: Mengedarkan nilai hash mengikut kunci ZSET. b. Pelbagai Sharding: Bahagikan ke dalam julat mengikut skor elemen, dan tetapkan setiap julat kepada nod yang berbeza. Baca dan tulis operasi: a. Baca Operasi: Jika kekunci ZSET adalah milik nod semasa, ia akan diproses secara tempatan; Jika tidak, ia akan dialihkan ke shard yang sepadan. b. Tulis Operasi: Sentiasa diarahkan ke Shards memegang kekunci ZSET.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Dreamweaver Mac版
Alat pembangunan web visual

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).