Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menyelesaikan masalah memori yang tidak mencukupi apabila menggunakan redis dalam php

Bagaimana untuk menyelesaikan masalah memori yang tidak mencukupi apabila menggunakan redis dalam php

WBOY
WBOYke hadapan
2023-06-01 16:37:121066semak imbas

Penyelesaian kepada memori PHP yang tidak mencukupi menggunakan redis: 1. Tetapkan saiz memori maksimum Redis kepada 100M melalui fail konfigurasi atau arahan 2. Dapatkan strategi penghapusan memori semasa; Melalui arahan "config Set maxmemory-policy allkeys-lru" boleh digunakan untuk mengubah suai dasar penghapusan.

Saiz memori yang diduduki oleh Redis

Kami tahu bahawa Redis ialah pangkalan data nilai kunci berasaskan memori Kerana saiz memori sistem adalah terhad, kami menggunakan Redis Anda boleh mengkonfigurasi saiz memori maksimum yang boleh digunakan oleh Redis.

1. Konfigurasikan melalui fail konfigurasi

Tetapkan saiz memori dengan menambah konfigurasi berikut pada fail konfigurasi redis.conf di bawah direktori pemasangan Redis

/ /Tetapkan saiz memori maksimum Redis kepada 100M maxmemory 100mb

Fail konfigurasi redis tidak semestinya menggunakan fail redis.conf di bawah direktori pemasangan apabila memulakan perkhidmatan redis, anda boleh menghantar parameter untuk menentukan fail konfigurasi redis. saiz memori maksimum yang diduduki oleh Redis kepada 100M 127.0.0.1:6379> set config maxmemory 100mb //Dapatkan saiz memori maksimum yang Redis boleh gunakan 127.0.0.1:6379> dapatkan saiz memori maksimum
tidak ditetapkan atau saiz memori maksimum ditetapkan kepada 0 , tiada had pada saiz memori di bawah sistem pengendalian 64-bit, dan sehingga 3GB memori boleh digunakan di bawah sistem pengendalian 32-bit

Penghapusan memori Redis

Kini setelah penghunian maksimum Redis boleh ditetapkan saiz memori, maka memori yang dikonfigurasikan akan digunakan. Kemudian apabila memori kehabisan, tidakkah tiada memori yang tersedia jika kita terus menambah data ke Redis? Malah, Redis mentakrifkan beberapa strategi untuk mengendalikan situasi ini:

noeviction (dasar lalai)

: tidak lagi menyediakan perkhidmatan untuk permintaan tulis dan terus mengembalikan ralat (kecuali untuk permintaan DEL dan beberapa permintaan khas)
kekunci semua -lru
: Gunakan algoritma LRU untuk menghapuskan daripada semua kekunci

volatile-lru: Gunakan algoritma LRU untuk menghapuskan daripada kekunci dengan set masa tamat tempoh allkeys-random

: Dari Secara Rawak hapuskan data dalam semua kekunci

volatile-random: Alih keluar data secara rawak daripada kunci dengan set masa tamat volatile-ttl: Dalam kunci dengan set masa tamat, mengikut masa tamat tempoh kunci Untuk penyingkiran, lebih cepat ia tamat tempoh, keutamaan yang lebih tinggi ia akan dihapuskan Apabila menggunakan volatile-lru, volatile-random, volatile-ttl ketiga-tiga ini Apabila menggunakan strategi ini, jika tiada kunci boleh dihapuskan, ralat yang sama akan dikembalikan seperti noeviction

Cara mendapatkan dan menetapkan strategi penghapusan memori Dapatkan dasar penghapusan Memori semasa: 127.0.0.1:6379> config get maxmemory-policy
Tetapkan dasar penghapusan melalui fail konfigurasi (ubah suai redis.conf fail):

maxmemory-policy allkeys-lru

Ubah suai dasar penghapusan melalui arahan:

127.0.0.1:6379> set konfigurasi maxmemory-policy-lru

Algoritma LRU

Apakah itu LRU?

Seperti yang dinyatakan di atas, apabila memori maksimum yang tersedia untuk Redis telah digunakan, algoritma LRU boleh digunakan untuk penghapusan ingatan Jadi apakah algoritma LRU?

LRU (Paling Kurang Digunakan)

, yang paling kurang digunakan baru-baru ini, ialah algoritma penggantian cache. Apabila menggunakan memori sebagai cache, saiz cache biasanya ditetapkan. Apabila cache penuh dan anda terus menambah data pada cache, anda perlu menghapuskan beberapa data lama dan mengosongkan ruang memori untuk menyimpan data baharu. Pada masa ini, algoritma LRU boleh digunakan. Idea teras ialah: jika sekeping data tidak digunakan dalam tempoh baru-baru ini, kemungkinan untuk digunakan pada masa hadapan adalah sangat kecil, jadi ia boleh dihapuskan.

Pelaksanaan LRU dalam Redis

Algoritma LRU Anggaran
Redis menggunakan algoritma LRU anggaran, yang serupa dengan konvensional Algoritma LRU tidaklah sama. Algoritma LRU anggaran menghapuskan data melalui pensampelan rawak, memilih 5 kekunci (lalai) secara rawak setiap kali, dan menghapuskan kekunci yang paling kurang digunakan baru-baru ini.

Anda boleh mengubah suai bilangan sampel melalui parameter maxmemory-samples: Contoh: maxmemory-samples 10 Semakin besar konfigurasi sampel maxmenory, semakin hampir hasil penyingkiran dengan algoritma LRU yang ketat

Redis untuk mencapai anggaran Algoritma LRU menambah medan 24-bit tambahan pada setiap kunci untuk menyimpan kali terakhir kunci itu diakses.

Apakah alatan untuk membina persekitaran pembangunan PHP

1.phpStudy ialah persekitaran pembangunan yang paling biasa digunakan untuk pemula.

2. WampServer, WampServer juga mudah dikendalikan seperti phpStudy dan lebih mesra kepada orang baru.

3. XAMPP, XAMPP (Apache+MySQL+PHP+PERL) ialah pakej perisian bersepadu membina laman web

4 untuk Mac.

5. Pagoda Panel, Pagoda Panel ialah perisian pengurusan pelayan yang menyokong sistem Windows dan Linux.

6. UPUPW, UPUPW kini merupakan suite PHP pelayan web yang paling tersendiri di bawah platform Windows.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah memori yang tidak mencukupi apabila menggunakan redis dalam php. 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