Berbagi teknologi

Konfigurasi dan optimasi redis NoSQL

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Pengenalan dasar dan perbandingan database redis

Redis (RemoteDictionaryServer, tipe kamus jarak jauh) adalah database NoSQL open source yang ditulis dalam bahasa C. Redis berjalan berdasarkan memori dan mendukung persistensi. Redis mengadopsi bentuk penyimpanan nilai kunci (pasangan nilai kunci) dan merupakan bagian tak terpisahkan dari arsitektur terdistribusi saat ini.

1. Basis data non-relasional

NoSQL (NoSQL= Not Only SQL), yang berarti "bukan hanya SQL", adalah istilah umum untuk database non-relasional. Basis data NoSQL arus utama mencakup Redis, MongBD, Hbase, CouhDB, dll. Basis data non-relasional di atas sangat berbeda dalam metode penyimpanan, struktur penyimpanan, dan skenario penggunaannya. Jadi menurut kami ini adalah kumpulan database non-relasional, bukan istilah umum seperti database relasional. Dengan kata lain, database selain database relasional arus utama dapat dianggap non-relasional. Basis data NOSQL dianggap sebagai produk basis data generasi berikutnya karena keunggulan non-relasional, terdistribusi, sumber terbuka, dan ekspansi horizontal.

2. Basis data relasional

Basis data relasional adalah basis data terstruktur berdasarkan model relasional dan umumnya berorientasi pada catatan. Ini memproses data dalam database dengan bantuan konsep dan metode matematika seperti aljabar himpunan. Model relasional mengacu pada model tabel dua dimensi, jadi database relasional adalah organisasi data yang terdiri dari tabel dua dimensi dan hubungan di antara keduanya. Di dunia nyata, berbagai entitas dan berbagai hubungan antar entitas dapat direpresentasikan dengan model relasional. Pernyataan SQL (Bahasa Kueri Data Standar) adalah bahasa yang didasarkan pada basis data relasional dan digunakan untuk mengambil dan mengoperasikan data dalam basis data relasional.

3. Latar belakang database non-relasional

Dengan munculnya situs web Web2.0, database relasional terekspos ketika berhadapan dengan situs web Web2.0, terutama situs web Web2.0 yang murni dinamis dengan data besar dan SNS konkurensi tinggi (Layanan Jejaring Sosial, yaitu layanan jejaring sosial). yang sulit dipecahkan, seperti masalah tiga tinggi.

(1) Performa tinggi - persyaratan membaca dan menulis secara bersamaan yang tinggi untuk database

Situs web Web2.0 akan menghasilkan halaman dinamis dan memberikan informasi dinamis secara real time berdasarkan informasi pribadi pengguna, sehingga teknologi statis halaman dinamis tidak dapat digunakan. Oleh karena itu, beban database secara bersamaan sangat tinggi, umumnya mencapai lebih dari 10.000 permintaan baca dan tulis. Basis data relasional masih dapat mendukung puluhan ribu permintaan kueri, tetapi jika ada puluhan ribu permintaan penulisan data, hard disk I0 tidak dapat lagi menahannya. Untuk situs web BBS biasa, sering kali terdapat permintaan penulisan data bersamaan yang tinggi.

(2)Penyimpanan Besar--Persyaratan untuk penyimpanan yang efisien dan akses data yang sangat besar

Situs web SNS seperti Facebook dan Friendfeed menghasilkan sejumlah besar informasi dinamis pengguna setiap hari. Misalnya, Friendfeed akan menghasilkan tidak kurang dari 250 juta informasi dinamis pengguna dalam sebulan. Untuk database relasional, efisiensi kueri sangat rendah ketika menjalankan kueri SQL dalam tabel yang berisi 250 juta catatan.

(3)Skalabilitas Tinggi && Ketersediaan Tinggi--Persyaratan untuk skalabilitas tinggi dan ketersediaan database yang tinggi

Dalam arsitektur Web, database adalah yang paling sulit untuk diskalakan secara horizontal. Ketika jumlah pengguna dan kunjungan ke sistem aplikasi meningkat dari hari ke hari, database tidak bisa begitu saja meningkatkan kinerja dan kapasitas muatnya dengan menambahkan perangkat keras dan node server seperti layanan Web. Khusus untuk beberapa website yang perlu menyediakan layanan 24 jam sehari, pemutakhiran dan perluasan database seringkali disertai dengan pemeliharaan downtime dan migrasi data, serta beban kerjanya yang sangat besar.

Basis data relasional dan basis data non-relasional memiliki karakteristik dan skenario penerapannya masing-masing. Kombinasi keduanya akan membawa ide-ide baru dalam pengembangan basis data Web2.0. Biarkan database relasional fokus pada hubungan, dan database non-relasional fokus pada penyimpanan. Misalnya, dalam lingkungan database MySQL yang membaca dan menulis dipisahkan, data yang sering diakses dapat disimpan dalam database non-relasional untuk meningkatkan kecepatan akses.

4.Kelebihan Redis

Ini memiliki kecepatan membaca dan menulis data yang sangat tinggi. Kecepatan membaca data dapat mencapai hingga 110,000 kali/detik, dan kecepatan menulis data dapat mencapai hingga 81,000 kali/detik.

Mendukung tipe data yang kaya, tidak hanya mendukung data tipe nilai kunci sederhana, tetapi juga mendukung operasi tipe data seperti Strings, Lists, Hashes, Sets dan Ordered Sets.

Mendukung persistensi data. Data di memori dapat disimpan di disk dan dapat dimuat kembali untuk digunakan saat restart.

Atomik, semua operasi Redis bersifat atomik.

Mendukung pencadangan data, yaitu pencadangan data dalam mode penyimpanan utama.

Redis adalah database berbasis memori, dan caching adalah salah satu skenario aplikasi yang paling umum. Selain itu, skenario aplikasi umum Redis juga mencakup operasi untuk memperoleh data N terbaru, pemeringkatan aplikasi, penghitung aplikasi, hubungan penyimpanan, sistem analisis waktu nyata, dan pencatatan.

2. Instalasi dan optimalisasi redis

1: Instalasi

[root@localhost ~]# systemctl stop firewalld //Dalam lingkungan eksperimental, mematikan firewall tidak berpengaruh. Tidak disarankan untuk mematikannya di lingkungan produksi.

[root@localhost ~]# setenforce 0 //Matikan kernel, yang akan memblokir aplikasi agar tidak berjalan.

[root@localhost ~]# yum -y install gcc* zlib-devel //Unduh alat yang diperlukan untuk mendekompresi paket tar

[akar@host lokal ~]#tar xvzf redis-4.0.9.tar.gz //redis adalah aplikasi open source dan gratis. Anda dapat mengunduh paket ini dari situs resminya

[akar@host lokal ~]#cd redis-4.0.9/

[root@localhost redis-4.0.9]# membuat

Melihat:

Saat membuat, pesan kesalahan berikut mungkin muncul:

Solusi 1: Gunakanbuat MALLOC=libc menentukan pengalokasi memori untuk libcmenyusun

Solusi 2: bersihkan && make distclean

[root@localhost redis-4.0.9]# buat PREFIX=/usr/local/redis instal

[root@localhost ~]# ln -s /usr/lokal/redis/bin/* /usr/lokal/bin/

[root@localhost redis-4.0.9]# cd /root/redis-4.0.9/utils/

[root@localhost utilitas]# ./install_server.sh

Komentar:

File konfigurasi: /etc/redis/6379.conf //Jalur file konfigurasi

Berkas log: /var/log/redis_6379.log //Jalur berkas log

Dir data: /var/lib/redis/6379 //Jalur file data

Dapat dieksekusi: /usr/local/redis/bin/redis-server //jalur file yang dapat dieksekusi

Cli yang Dapat Dieksekusi: /usr/local/redis/bin/redis-cli //Alat baris perintah klien

2: Lihat prosesnya

[root@localhost utilitas]# netstat -anpt | grep redis

3: Kontrol layanan

[root@localhost ~]#/etc/init.d/redis_6379 berhenti

[root@localhost ~]#/etc/init.d/redis_6379 mulai

[root@localhost ~]#/etc/init.d/redis_6379 mulai ulang

[root@localhost ~]#/etc/init.d/redis_6379 status

4: Modifikasi parameter konfigurasi

[root@localhost ~]#vim /etc/redis/6379.conf

ikat 127.0.0.1 192.168.10.101    //Mendengarkan alamat host

pelabuhan 6379 //pelabuhan

daemonisasi ya //Aktifkan proses daemon

file pid /var/jalankan/redis_6379.pid //Tentukan file PID

pemberitahuan loglevel //tingkat log

berkas log /var/log/redis_6379.log //Tentukan file log

[root@localhost~]#/etc/init.d/redis_6379 mulai ulang

[root@localhost utilitas]# netstat -anpt | grep redis

3. Alat perintah Redis

Ø redis-server: alat untuk memulai Redis;

Ø redis-benchmark: digunakan untuk mendeteksi efisiensi berjalannya Redis pada mesin ini;

Ø redis-check-aof: Memperbaiki file persistensi AOF;

Ø redis-check-rdb: Memperbaiki file persistensi RDB;

Ø redis-cli: Alat baris perintah Redis.

1: alat baris perintah redis-cli

(1) Hubungkan ke redis lokal

[root@localhost ~]# redis-cli

127.0.0.1:6379>

(2) Uji apakah layanan redis dimulai

127.0.0.1:6379> ping

PONG

(3) Koneksi jarak jauh

[root@localhost ~]#redis-cli -h 192.168.10.101 -p 6379

2: Dapatkan bantuan

Ø bantuan@<group> :Memperoleh<group> daftar perintah di ;

Ø bantuan<command> : Dapatkan bantuan untuk suatu perintah;

Ø bantuan<tab> : Dapatkan daftar topik yang mungkin membantu.

Komentar:

Ø bantuan<tab> : Dapatkan daftar topik yang mungkin membantu.

Setelah mengetik bantuan, tekan tombol tab

(1)Lihat semua perintah yang terkait dengan tipe data Daftar

127.0.0.1:6379&gt;bantuan @daftar

(2)Lihat bantuan perintah untuk perintah set

127.0.0.1:6379&gt;bantuan set

3: alat pengujian tolok ukur redis

redis-benchmark adalah alat pengujian kinerja Redis resmi yang dapat menguji kinerja layanan Redis secara efektif.

Ø -h: Tentukan nama host server;

Ø -p: Tentukan port server;

Ø -s: Tentukan soket server;

Ø -c: Tentukan jumlah koneksi bersamaan;

Ø -n: Tentukan jumlah permintaan;

Ø -d: Tentukan ukuran data dari nilai SET/GET dalam byte;

Ø -k:1=tetap hidup 0=sambung kembali;

Ø -r: SET/GET/INCR menggunakan kunci acak, SADD menggunakan nilai acak;

Ø -P : Transmisi melalui pipa<numreq> bertanya;

Ø -q: Paksa keluar dari redis. Hanya nilai kueri/detik yang ditampilkan;

Ø --csv: keluaran dalam format CSV;

Ø -l: Hasilkan loop dan jalankan pengujian secara permanen;

Ø -t: Hanya jalankan daftar perintah pengujian yang dipisahkan koma;

Ø -I: Mode siaga. Buka hanya N koneksi idle dan tunggu.

(1) Uji kinerja permintaan

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000 //Kirim 100 koneksi bersamaan dan 100000 pengujian permintaan ke server Redis dengan alamat IP 192.168.10.101 dan kinerja port 6379

Komentar:

Ø -h: Tentukan nama host server;

Ø -p: Tentukan port server;

Ø -c: Tentukan jumlah koneksi bersamaan;

Ø -n: Tentukan jumlah permintaan;

====== MSET (10 kunci) ======

100000 permintaan diselesaikan dalam 1,02 detik

100 klien paralel ##100 koneksi bersamaan

Muatan 3 byte

tetap hidup: 1

87,25% &lt;= 1 milidetik ##87.25% waktu eksekusi perintah kurang dari atau sama dengan 1 milidetik

99,90% &lt;= 2 milidetik

100,00% &lt;= 2 milidetik

97943.19 permintaan per detik #Jumlah permintaan per detik

(2) Uji kinerja akses

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

Komentar:

Ø -h: Tentukan nama host server;

Ø -p: Tentukan port server;

Ø -d: Tentukan ukuran data dari nilai SET/GET dalam byte;

Ø -q: Paksa keluar dari redis. Hanya nilai kueri/detik yang ditampilkan;

PING_INLINE: 121506.68 permintaan per detik //Berapa banyak operasi PING yang diselesaikan per detik

PING_BULK: 124378.11 permintaan per detik

SET: 121654.50 permintaan per detik //Berapa kali per detik SET key vlaue selesai

DAPATKAN: 122100.12 permintaan per detik //Berapa banyak nilai kunci GET yang diselesaikan per detik

INCR: 118764.84 permintaan per detik //Berapa banyak hitungan atom yang diselesaikan per detik

LPUSH: 112612.61 permintaan per detik

RPUSH: 118623,96 permintaan per detik

LPOP: 107874,87 permintaan per detik

RPOP: 114416,48 permintaan per detik

SADD: 123304,56 permintaan per detik

HSET: 122249,38 permintaan per detik

SPOP: 128040.97 permintaan per detik

LPUSH (diperlukan untuk mengukur LRANGE): 116686.12 permintaan per detik

LRANGE_100 (100 elemen pertama): 40016.00 permintaan per detik

LRANGE_300 (300 elemen pertama): 11991,85 permintaan per detik

LRANGE_500 (450 elemen pertama): 7381,71 permintaan per detik

LRANGE_600 (600 elemen pertama): 5230,67 permintaan per detik

MSET (10 kunci): 92421,44 permintaan per detik //Beberapa kunci v per detikselamat datangJumlah permintaan

(3)Atur dan dorong kinerja operasi

[root@localhost ~]# redis-benchmark -t atur,lpush -n 100000 -q //Uji kinerja layanan Redis pada mesin ini selama operasi set dan lpush.

Komentar:

Ø -n: Tentukan jumlah permintaan;

Ø -q: Paksa keluar dari redis. Hanya nilai kueri/detik yang ditampilkan;

Ø -t: Hanya jalankan daftar perintah pengujian yang dipisahkan koma;

SET: 121951.22 permintaan per detik

LPUSH: 127226.46 permintaan per detik

4. Ulang Perintah basis data umum

Ø mengatur: Menyimpan data. Format perintah dasarnya adalah tetapkan nilai kunci

Ø mendapatkan: Dapatkan data, format perintah dasarnya adalah dapatkan kunci

1kunci Perintah terkait

ada Merah dalam database, dengan kunci Perintah yang relevan terutama mencakup hal-hal berikut.

1) tambahkan pasangan nilai kunci

menggunakan kunci Perintah tersebut dapat mengambil daftar nilai kunci yang sesuai dengan aturan. Biasanya dapat digabungkan* ,? pilihan untuk digunakan.

127.0.0.1:6379>mengatur k1 1

OKEEEEEEEEEEEEEEE

127.0.0.1:6379>mengatur k2 2

OKEEEEEEEEEEEEEEE

127.0.0.1:6379>mengatur k3 3

OKEEEEEEEEEEEEEEE

127.0.0.1:6379>mengatur v1 4

OKEEEEEEEEEEEEEEE

127.0.0.1:6379>mengatur v5 5

OKEEEEEEEEEEEEEEE

(2) Lihat semua kunci dalam database saat ini

127.0.0.1:6379>KUNCI  *  

1) "guru"

2) "k1"

3) "k2"

4) "k3"

5) "v1"

6) "v5"

127.0.0.1:6379>mengatur v22 5

OKEEEEEEEEEEEEEEE

(3) Lihat database saat ini dengan kita data di awal

127.0.0.1:6379>KUNCI v*    

1) "v1"

2) "v5"

3) "v22"

(4) Lihat database saat ini dengan kita Berisi sedikit data setelah awal

127.0.0.1:6379>KUNCI v?   

1) "v1"

2) "v5"

(5) Lihat database saat ini dengan kita awal kita Berisi dua digit data setelah awal

127.0.0.1:6379>KUNCI v??   

1) "v22"

2:ada

ada Perintah tersebut dapat menentukan apakah nilai kunci ada

127.0.0.1:6379>ada guru

(bilangan bulat) 1

Hasilnya 1 yang artinya guru kuncinya ada

127.0.0.1:6379>ada teh

(bilangan bulat) 0

Hasilnya 0 yang artinya teh kuncinya tidak ada

3:del

menghapus Perintah tersebut dapat menghapus yang ditentukan kunci

127.0.0.1:6379>kunci *

1) "guru"

2) "v1"

3) "v22"

4) "k3"

5) "k1"

6) "k2"

7) "v5"

127.0.0.1:6379> dari v5

(bilangan bulat) 1

127.0.0.1:6379>dapatkan v5

(nol)

4:jenis

menggunakan jenis Perintah dapat diperoleh kunci sesuai nilai tipe nilai

127.0.0.1:6379>tipe k1

rangkaian

Komentar:

Tipe data yang didukung oleh redis

  • String: Tipe paling sederhana, yaitu set dan get biasa, digunakan untuk cache nilai kunci.
  • Hash: Struktur yang mirip dengan peta. Umumnya, data terstruktur, seperti objek, dapat di-cache di redis.
  • Daftar: Daftar adalah daftar yang diurutkan. Anda dapat menggunakan daftar untuk menyimpan beberapa struktur data tipe daftar, seperti daftar penggemar, daftar komentar artikel, dll.
  • Set: Set adalah koleksi tidak berurutan yang secara otomatis menghapus duplikat.
  • Set yang Diurutkan: Set yang Diurutkan adalah kumpulan yang diurutkan, yang dihapus duplikatnya tetapi dapat diurutkan, saat menulis, skor diberikan dan secara otomatis diurutkan berdasarkan skor.

5:mengganti nama

mengganti nama Perintahnya untuk yang sudah ada kunci ganti nama

Dalam penggunaan sebenarnya, disarankan untuk menggunakan ada Perintah untuk melihat target kunci ada, dan kemudian memutuskan apakah akan mengeksekusi mengganti nama perintah untuk menghindari penimpaan data penting

127.0.0.1:6379>kunci v*

1) "v1"

2) "v22"

127.0.0.1:6379>ganti nama v22 v2

OKEEEEEEEEEEEEEEE

127.0.0.1:6379>kunci v*

1) "v1"

2) "v2"

127.0.0.1:6379>dapatkan v1

"4"

127.0.0.1:6379>dapatkan v2

"5"

127.0.0.1:6379>ganti nama v1 v2

OKEEEEEEEEEEEEEEE

127.0.0.1:6379>dapatkan v1

(nol)

127.0.0.1:6379>dapatkan v2

"4"

6:ganti nama

ganti nama Fungsi dari perintah tersebut adalah untuk memodifikasi yang sudah ada kunci Lakukan rename dan periksa apakah nama baru tersebut ada.

menggunakanganti nama Ketika perintah diubah namanya, jika targetnya kunci Jika ada, maka tidak akan diganti namanya.

127.0.0.1:6379>kunci *

1) "guru"

2) "k3"

3) "k1"

4) "k2"

5) "v2"

127.0.0.1:6379>dapatkan guru

"Zhanglong"

127.0.0.1:6379>dapatkan v2

"4"

127.0.0.1:6379>guru renamenx v2

(bilangan bulat) 0

127.0.0.1:6379>kunci *

1) "guru"

2) "k3"

3) "k1"

4) "k2"

5) "v2"

127.0.0.1:6379>dapatkan guru

"Zhanglong"

127.0.0.1:6379>dapatkan v2

"4

7:ukuran db

ukuran db Tujuan dari perintah ini adalah untuk melihat database saat ini kunci Jumlah.

127.0.0.1:6379> ukuran db

(bilangan bulat) 5

5. Perintah umum untuk banyak database

1: Beralih di antara beberapa database

Merah Disertakan secara default tanpa perubahan apa pun 16 database, nama database adalah angka 0-15 untuk diberi nama secara berurutan

(1)Beralih ke nomor seri 10 basis data

127.0.0.1:6379>pilih 10

OKEEEEEEEEEEEEEEE

(2)Beralih ke nomor seri 15 basis data

127.0.0.1:6379[10]>pilih 15

OKEEEEEEEEEEEEEEE

(3)Beralih ke nomor seri 0 basis data

127.0.0.1:6379[15]>pilih 0

2: Memindahkan data antar beberapa database

Merah Beberapa database relatif independen sampai batas tertentu, misalnya dalam database 0 Simpan di atas Bahasa Inggris: Bahasa Inggris: Bahasa Inggris: k1 data, di sisi lain 1-15 Itu tidak dapat dilihat di database.

127.0.0.1:6379>mengatur k1 100

OKEEEEEEEEEEEEEEE

127.0.0.1:6379>dapatkan k1

"100"

127.0.0.1:6379>pilih 1

OKEEEEEEEEEEEEEEE

127.0.0.1:6379[1]>dapatkan k1

(nol)

127.0.0.1:6379[1]>pilih 0 //Beralih ke basis data target 0

OKEEEEEEEEEEEEEEE

127.0.0.1:6379>dapatkan k1 //Periksa apakah data target ada

"100"

127.0.0.1:6379>pindah k1 1 //basis data 0 tengah Bahasa Inggris: Bahasa Inggris: Bahasa Inggris: k1 Pindah ke basis data 1 tengah

(bilangan bulat) 1

127.0.0.1:6379>pilih 1 //Beralih ke basis data target 1

OKEEEEEEEEEEEEEEE

127.0.0.1:6379[1]>dapatkan k1 //Lihat data yang dipindahkan

"100"

127.0.0.1:6379[1]> pilih 0

OKEEEEEEEEEEEEEEE

127.0.0.1:6379> dapatkan k1 //dalam basis data 0 Tidak dapat dilihat di Bahasa Inggris: Bahasa Inggris: Bahasa Inggris: k1 nilai

(nol)

3: Hapus data dalam database

Untuk menghapus data database saat ini, gunakan BAHASA INGGRIS

Implementasi perintah; hapus semua data database, gunakan SIRAM SEMUA Implementasi perintah

6. Persistensi kembali

Merah Semua data disimpan dalam memori dan kemudian disimpan secara asinkron ke disk dari waktu ke waktu.(Ini disebutMode semi-persisten”); Anda juga dapat menulis setiap perubahan data ke a tambahkan hanya file(aof)di dalam(Ini disebutMode persistensi penuh”)

Karena data Redis disimpan di memori, jika persistensi tidak dikonfigurasi,Merah Setelah restart, semua data hilang.Oleh karena itu, perlu untuk mengaktifkannyaMerah Fungsi persistensi menyimpan data ke disk Kapan Merah Setelah reboot, data dapat dipulihkan dari disk.Merah Dua metode disediakan untuk ketekunan, satu adalah Bahasa Indonesia: Bahasa Indonesia: RDBBasis Data Redis Ketekunan (prinsipnya adalah untuk Reid dan para pengikutnyaWaktu pencatatan basis data dalam memori membuang ke disk Bahasa Indonesia: Bahasa Indonesia: Bahasa Indonesia: RDB ketekunan), yang lainnya adalah Angkatan Udaratambahkan saja mengajukanKetekunan (prinsipnya adalah untuk Reid dan para pengikutnya Log operasi ditulis ke file dengan cara terlampir).

1:Bahasa Indonesia: Bahasa Indonesia: Bahasa Indonesia: RDB Dan Angkatan Udara Perbedaan

(1) Apa itu RDB?

Metode bawaan

Persistensi RDB adalah proses menghasilkan snapshot dari data proses saat ini dan menyimpannya ke hard disk. Proses memicu persistensi RDB dibagi menjadi pemicu manual dan pemicu otomatis.

Mekanisme pemicu: Pemicu manual sesuai dengan perintah simpan dan bgsave masing-masing.

perintah simpan: memblokir server Redis saat ini hingga proses RDB selesai. Untuk instance dengan jumlah memori yang besar, ini akan menyebabkan pemblokiran waktu. Tidak disarankan untuk digunakan di lingkungan online.

perintah bgsave: Proses Redis menjalankan operasi fork (fungsi yang digunakan untuk membuat proses) untuk membuat proses anak. Proses persistensi RDB bertanggung jawab atas proses anak dan berakhir secara otomatis setelah selesai. Pemblokiran hanya terjadi selama fase fork.

(2) Keuntungan dan kerugian RDB:

Keuntungan RDB:

RDB adalah file biner terkompresi dan ringkas yang mewakili cuplikan data Redis pada titik waktu tertentu. Sangat cocok untuk pencadangan, penyalinan penuh, dan skenario lainnya. Misalnya, lakukan pencadangan bgsave setiap 6 jam dan salin file RDB ke mesin jarak jauh atau sistem file untuk pemulihan bencana.

Redis memuat RDB dan memulihkan data jauh lebih cepat daripada metode AOF.

Kekurangan RDB:

Data dalam mode RDB tidak dapat mencapai persistensi real-time/persistensi tingkat kedua. Karena setiap kali bgsave dijalankan, operasi fork dilakukan untuk membuat proses anak, yang merupakan operasi kelas berat dan biaya eksekusi yang sering terlalu tinggi.

File RDB disimpan dalam format biner tertentu. Selama evolusi versi Redis, ada beberapa format versi RDB. Ada masalah bahwa versi lama layanan Redis tidak kompatibel dengan format RDB versi baru.

2. Apa itu AOF?

Persistensi AOF (tambahkan file saja): catat setiap perintah tulis di log independen, lalu jalankan kembali perintah di file AOF untuk memulihkan data saat memulai ulang. Fungsi utama AOF adalah untuk menyelesaikan masalah persistensi data secara real-time. Hal ini kini menjadi arus utama persistensi Redis.

Kriteria untuk memilih di antara keduanya:

Korbankan sebagian kinerja demi konsistensi cache yang lebih tinggi (Angkatan Udara),

Jika operasi penulisan sering dilakukan, jangan aktifkan pencadangan untuk mendapatkan kinerja yang lebih tinggi dan tunggu operasi manual. menyimpan kapan, buat cadangan lagi (Bahasa Indonesia: Bahasa Indonesia: RDB

Komentar:

Jika file persisten perlu dimuat setelah proses ulang dimulai ulang, file AOF akan dipilih.

Jika RDB diaktifkan terlebih dahulu lalu AOF diaktifkan, dan RDB dipertahankan terlebih dahulu, konten dalam file RDB akan ditimpa oleh AOF.

3:Merah Konfigurasi persistensi

(1)Bahasa Indonesia: Bahasa Indonesia: Bahasa Indonesia: RDB Konfigurasi persistensi

[root@localhost ~]# vim /etc/redis/6379.conf

Buka 6379.conf Setelah file tersebut, cari menyimpan, Anda dapat melihat informasi konfigurasi seperti gambar di bawah ini.

  • Ø simpan 900 1: Setelah 900 detik (15 menit), jika setidaknya 1 kunci berubah, buang snapshot memori.
  • Ø simpan 300 10: Setelah 300 detik (5 menit), jika setidaknya 10 kunci telah berubah, buang snapshot memori.
  • Ø simpan 60 10.000: Setelah 60 detik (1 menit), jika setidaknya 10.000 kunci telah diubah, buang snapshot memori.
  • dbfilename dump.rdb: nama file RDB ##254 baris
  • dir /var/lib/redis/6379: jalur file RDB ##264 baris
  • rdbcompression yes: Apakah akan mengompresi baris ##242

(2)Jangkauan Angin Konfigurasi persistensi

ada Merah Ada tiga metode sinkronisasi pada file konfigurasi, yaitu:

  • tambahkan saja ya: Aktifkan persistensi AOF (standarnya adalah tidak) ##673 baris
  • appendfilename "appendonly.aof ": nama file AOF ##677 baris
  • # appendfsync selalu
  • tambahkan sinkronisasi setiap detik
  • # appendfsync tidak

selalu: persistensi sinkron, setiap kali data berubah, data akan segera ditulis ke disk

everysec: Direkomendasikan secara default, rekam secara asinkron setiap detik (nilai default)

no: Tidak ada sinkronisasi, menyerahkan kepada sistem operasi untuk memutuskan bagaimana melakukan sinkronisasi

  • aof-load-truncated ya ##769 komentar

Abaikan instruksi terakhir yang berpotensi bermasalah

[root@localhost ~]#/etc/init.d/redis_6379 mulai ulang

(2) penulisan ulang AOF

untuk menyelesaikannya Angkatan Udara Jika ukuran file terus bertambah, pengguna dapat melaporkan ke Merah mengirim BGREWRITEAOFMemesan.BGREWRITEAOF Perintah akan dihapus melalui Angkatan Udara perintah berlebihan dalam file untuk ditimpa (menulis kembaliAngkatan Udarafile, buat Angkatan Udara Usahakan ukuran file sekecil mungkin.

127.0.0.1:6379&gt; tuliskan bgre

Penulisan ulang file hanya penambahan latar belakang dimulai

# Jika lognya adalah BGREWRITEAOF,jikano-appendfsync-saat-menulis-ulangDisetel ke ya, yang berarti operasi penulisan baru tidak akan disinkronkan dengan fsync, tetapi hanya akan disimpan sementara di buffer. , untuk menghindari konflik operasi IO disk, tunggu hingga penulisan ulang selesai sebelum menulis. Default di Redis adalah no

no-appendfsync-on-rewrite tidak

# Ketika ukuran file AOF saat ini dua kali ukuran file AOF selama penulisan ulang log terakhir, operasi BGREWRITEAOF terjadi.

auto-aof-tulis ulang-persentase 100

Komentar:

100 mengacu padaRasio pertumbuhan file AOF mengacu pada rasio pertumbuhan file AOF saat ini dibandingkan dengan penulisan ulang terakhir.100 adalah dua kali

#Nilai minimum file AOF saat ini untuk menjalankan perintah BGREWRITEAOF untuk menghindari seringnya BGREWRITEAOF karena ukuran file kecil saat Reids pertama kali dimulai.

auto-aof-tulis ulang-ukuran-min 64mb

7. Manajemen kinerja

1: Lihat informasi memori

192.168.9.236:7001> memori informasi

Used_memory:1210776 #Ukuran memori yang digunakan,dalam byte
Used_memory_human:1.15M # Tampilan dengan unit,di M
Used_memory_rss:7802880 # Berapa banyak memori yang ditempati redis dari sudut pandang sistem operasi?
Used_memory_rss_human:7.44M # Tampilan dengan unit
maxmemory:1073741824 # Ukuran memori maksimum
maxmemory_human:1.00G # Tampilan dengan unit

2: Strategi daur ulang

kebijakan memori-maksimum: Strategi daur ulang

Ø volatil-lru: itu memungkinkan Merah Pilih yang terakhir digunakan dari seluruh kumpulan data kunci Menghapus

Ø volatil-ttlHilangkan sesuai dengan masa kadaluarsa kunci 

Ø acak-mudah menguap: Memilih data secara acak untuk dihilangkan dari pengumpulan data dengan waktu kedaluwarsa yang ditetapkan;

Ø semua kunci-lru:menggunakan LRU Algoritma menghilangkan data dari semua kumpulan data;

Ø semua kunci acak: Memilih data secara acak untuk dihilangkan dari pengumpulan data;

Ø pengusiran: Nonaktifkan penghapusan data (nilai default)

Komentar:

Tetapkan waktu kedaluwarsa kunci

kedaluwarsa v1 10

v1 memiliki waktu kedaluwarsa 10 detik

Komentar:

Kapan Merah Perlu mengambilnya kembali karena tekanan memori kunci jam,Merah Pertimbangan pertama bukanlah mendaur ulang data terlama, melainkan data yang paling sedikit digunakan. kunci atau akan kedaluwarsa kunci Pilih satu secara acak kunci, dihapus dari kumpulan data

8. Tetapkan kata sandi untuk redis

1: Metode pengaturan

Metode 1. Tetapkan kata sandi melalui file konfigurasi redis.conf

Temukan kata kunci requirepass, diikuti dengan kata sandi. Ini dikomentari secara default, yaitu tidak diperlukan kata sandi secara default, sebagai berikut:

Buka komentar, tetapkan sebagai kata sandi Anda sendiri, dan mulai ulang

Metode 2. Tetapkan kata sandi dengan memberi nama

Gunakan redis-cli untuk terhubung ke redis dan jalankan perintah berikut

set konfigurasi memerlukan pass 123456

Setelah eksekusi selesai, tidak perlu memulai ulang. Anda harus memasukkan kata sandi saat keluar dari klien dan masuk kembali.

2. Metode koneksi

1. Masukkan kata sandi Anda saat menghubungkan

[root@localhost bin]# ./redis-cli -a 123456

2. Hubungkan terlebih dahulu lalu masukkan kata sandi

[root@localhost bin]# ./redis-cli127.0.0.1:6379&gt; autentikasi 123456

3: Metode tutup

[root@localhost bin]# ./redis-cli -a 123456 matikan

4: Perbedaan

1) Kata sandi yang ditetapkan dengan memodifikasi file konfigurasi akan berlaku secara permanen; kata sandi yang ditetapkan dengan menggunakan perintah akan berlaku sementara dan akan menjadi tidak valid setelah dimulai ulang.

2) Memodifikasi kata sandi yang ditetapkan dalam file konfigurasi memerlukan restart agar dapat diterapkan; gunakan kata sandi yang ditetapkan oleh perintah agar berlaku setelah keluar dan masuk lagi, dan itu akan menjadi tidak valid setelah memulai ulang.

3) Prioritas perintah lebih tinggi dari prioritas file konfigurasi