Berbagi teknologi

Konfigurasi dan pengoptimalan Redis

2024-07-12

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

1. Database relasional dan database non-relasional

(1) Basis data relasional

Basis data relasional adalah basis data terstruktur, dibuat pada basis data model relasional, dan dibuat berorientasi pada catatan.

Basis data relasional umum: Oracle, MySQL, SQL Server, Microsoft Access, DB2.

(2) Basis data non-relasional

NOSQL=Tidak Hanya SQL yang merupakan istilah umum untuk database non-relasional. Bergantung pada metode penyimpanan, struktur penyimpanan, dan skenario penggunaan, ini disebut database non-relasional. Basis data selain basis data relasional arus utama dapat disebut basis data non-relasional.

Basis data non-relasional yang umum: Redis, MongoDB, Hbase, CouhDB.

2. Dasar-dasar redis

(1) Pengantar Redis

Redis adalah database Nosql open source yang ditulis dalam bahasa C. Redis berjalan berdasarkan memori dan mendukung persistensi. Nomor portnya adalah 6379.

(2) Keuntungan Redis

  1. Memiliki kecepatan membaca dan menulis data yang tinggi.
  2. Mendukung tipe data yang kaya. nilai kunci, string, daftar, hash, set, set terurut.
  3. Mendukung persistensi data. Data disimpan di disk dan dapat dimuat serta digunakan setelah restart.
  4. atom.
  5. Mendukung cadangan data.

3. instalasi redis

1. Instal Redis

[root@localhost ~]# systemctl hentikan firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y instal gcc* zlib-devel

[akar@host lokal ~]#tar xvzf redis-4.0.9.tar.gz

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

[root@localhost redis-4.0.9]# membuat

Melihat:

Pesan kesalahan akan dihasilkan setelah pembuatan,

larutan:
Solusi 1: Gunakan make MALLOC=libc untuk menentukan pengalokasi memori yang akan dikompilasi untuk libc
Solusi 2: bersihkan && bersihkan

[root@localhost redis-4.0.9]# buat PREFIX=/usr/local/redis instal
[root@localhost utilitas]# ln -s /usr/lokal/redis/bin/* /usr/lokal/bin/

[root@localhost redis-4.0.9]# cd utilitas/
Diantaranya: install_server.sh adalah skrip inisialisasi

[root@localhost utilitas]# ./install_server.sh
Silakan pilih jalur eksekusi redis [] /usr/local/redis/bin/redis-server(berikan jalur yang dapat dieksekusi)

Lihat proses dan kontrol layanan
[root@localhost utilitas]# netstat -anpt | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* DENGARKAN 5360/redis-server 1
[root@localhost utils]# /etc/init.d/redis_6379 berhenti(redis ditutup)
[root@localhost utils]# /etc/init.d/redis_6379 mulai(pada)
[root@localhost utilitas]# /etc/init.d/redis_6379 status (negara)

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

2.redis alat perintah

[root@localhost utilitas]# redis-cli(Login lokal)
[root@localhost utilitas]# redis-cli -h 192.168.10.101 -p 6379(login jarak jauh)
192.168.10.101:6379> ping(Layanan deteksi berjalan normal)
PONG

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: transfer 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: Jalankan hanya 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

    Komentar:

    -h: Tentukan nama host server;

  • -p: Tentukan port server;

    -c: Tentukan jumlah koneksi bersamaan;

    -n: Tentukan jumlah permintaan;

(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;

  1. 4. Perintah umum untuk database Redis

set menyimpan format perintah data setel nilai kunci

dapatkan format perintah Dapatkan data, dapatkan kunci

(1) Perintah terkait kunci

1. Tambahkan pasangan nilai kunci

127.0.0.1:6379&gt; atur 1 1
OKEEE
127.0.0.1:6379&gt; atur 2 2
OKEEE
127.0.0.1:6379&gt; atur 3 3
OKEEE

2. Lihat semua nilai dalam database

127.0.0.1:6379&gt; kunci *
1) "3"
2) "1"
3) "2"

3. Melihat data yang dimulai dengan v di database
127.0.0.1:6379>KUNCI v*

4. Lihat data apa pun yang dimulai dengan v di database

127.0.0.1:6379>KUNCI v?

5.Lihat database saat ini dengan kita awalBerikut ini berisi dua digit data apa pun

127.0.0.1:6379>KUNCI v??

(2) ada

Tentukan apakah nilainya ada.

127.0.0.1:6379>ada f5Tentukan apakah f5 ada

(bilangan bulat) 1 Hasilnya 1, menandakan kunci f5 ada

menyukai

(bilangan bulat) 0 Hasilnya 0, menandakan kunci f5 tidak ada

(3)del

menghapus Perintah tersebut dapat menghapus yang ditentukan kunci

127.0.0.1:6379> dari v5 Hapus v5 di database

(bilangan bulat) 1

127.0.0.1:6379>dapatkan v5

(nol)

(4) mengetik

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: String adalah tipe yang paling sederhana, yaitu set dan get biasa, digunakan untuk cache nilai kunci.
  • Hash: Algoritme hash, strukturnya 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) ganti 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>ganti nama v22 v2 Ganti nama v22 menjadi v2

OKEEEEEE

(6) mengganti 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.

(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

OKEEEEEE

(2)Beralih ke nomor seri 15 basis data

127.0.0.1:6379[10]>pilih 15

OKEEEEEE

(3)Beralih ke nomor seri 0 basis data

127.0.0.1:6379[15]>pilih 0

(2) Memindahkan data antar beberapa database

127.0.0.1:6379>mengatur k1 100 Buat k1 di database 0

OKEEEEEE

127.0.0.1:6379>dapatkan k1

"100"

127.0.0.1:6379>pindah k1 1  //Pindahkan k1 di database 0 ke database 1

(bilangan bulat) 1

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

OKEEEEEE

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

"100"

127.0.0.1:6379[1]> pilih 0

OKEEEEEE

127.0.0.1:6379> dapatkan k1         //Nilai k1 tidak dapat dilihat di database 0

(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 Merah Semua data disimpan dalam 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: Bahasa Indonesia: RDBBasis Data Redis Ketekunan (prinsipnya adalah untuk Reid dan para pengikutnyaPembuangan catatan basis data dalam memori dengan jangka waktu (membuang)ke disk 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).

Perbedaan antara RDB dan AOF

ROB menulis snapshot data ke disk dalam interval waktu yang ditentukan. Ini adalah sub-proses dari fork. ROB pertama-tama menulis data ke folder sementara. Setelah berhasil, ia akan mengganti file sebelumnya dan menyimpannya dengan kompresi biner.

AOF mencatat setiap operasi tulis dan hapus server dalam bentuk log. Operasi query tidak akan direkam, namun akan direkam dalam bentuk teks.

 

Kelebihan dan kekurangan RDB dan AOF

Keunggulan 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.

Pemulihan data cepat.

Maksimalkan kinerja

Efisiensi permulaan yang tinggi

Bahasa Indonesia: Bahasa Indonesia: Bahasa Indonesia: RDBkekurangan:

Data yang tidak disimpan sebelum dimatikan akan hilang.

       RDB diselesaikan melalui proses anak fork, yang menghabiskan sumber daya.

Keunggulan AOF:

Daya tahan datanya tinggi

Dalam mode penambahan, konten file log tidak akan dimusnahkan meskipun ada waktu henti.

Mekanisme penulisan ulang dapat dimulai untuk melindungi keamanan data.

Kerugian AOF:

Kecepatan pemulihan data AOF lambat

Efisiensi operasi AOF rendah

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: Bahasa Indonesia: RDB

Komentar:

Jika redies perlu memuat file persistensi setelah memulai ulang,prioritasFile AOF akan dipilih.

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

7. Konfigurasi persistensi Redis

(1) Konfigurasi persistensi RDB

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

Membuka 6379.konflik 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 berubah, 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) Konfigurasi persistensi AOF

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

  • hanya ditambahkan yaAktifkan persistensi AOF (defaultnya adalah no) ##673 baris
  • tambahkan namafile "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 ##702 baris

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

8. Masalah kinerja

(1) Lihat informasi memori

192.168.9.236:7001> memori informasi

memori_yang_digunakan:1210776 Ukuran memori yang digunakan, dalam byte
digunakan_memori_manusia:1,15 jutaDitampilkan dengan satuan, dalam M
digunakan_memori_rss:7802880Berapa banyak memori yang ditempati redis dari sudut pandang sistem operasi?
digunakan_memori_rss_manusia:7.44MTampilan dengan satuan
memori maks:1073741824Ukuran memori maksimum
memori_maksimum_manusia:1.00G Tampilan dengan satuan

(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)

Tetapkan waktu kedaluwarsa kunci

127.0.0.1:6379>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