Condivisione della tecnologia

Configurazione e ottimizzazione di Redis

2024-07-12

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

1. Database relazionali e database non relazionali

(1) Database relazionale

Un database relazionale è un database strutturato, creato su un modello di database relazionale e creato orientato ai record.

Database relazionali comuni: Oracle, MySQL, SQL Server, Microsoft Access, DB2.

(2) Database non relazionale

NOSQL=Non solo SQL è il termine generale per i database non relazionali. A seconda del metodo di archiviazione, della struttura di archiviazione e degli scenari di utilizzo, viene chiamato database non relazionale. I database diversi dai database relazionali tradizionali possono essere chiamati database non relazionali.

Database non relazionali comuni: Redis, MongoDB, Hbase, CouhDB.

2. Nozioni di base su Redis

(1) Introduzione a Redis

Redis è un database Nosql open source scritto in linguaggio C. Funziona in base alla memoria e supporta la persistenza. Adotta il formato di archiviazione chiave-valore (coppia chiave-valore). Il suo numero di porta è 6379.

(2) Vantaggi di Redis

  1. Ha un'elevata velocità di lettura e scrittura dei dati.
  2. Supporta tipi di dati avanzati. valore-chiave, stringhe, elenchi, hash, insiemi, insiemi ordinati.
  3. Supporta la persistenza dei dati. I dati vengono salvati sul disco e possono essere caricati e utilizzati dopo il riavvio.
  4. Atomico.
  5. Supporta il backup dei dati.

3. installazione di ridis

1. Installa Redis

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

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

[root@localhost ~]#tar xvzf redis-4.0.9.tar.gz

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

[root@localhost redis-4.0.9]# crea

Avviso:

Verrà generato un messaggio di errore dopo make,

soluzione:
Soluzione 1: utilizzare make MALLOC=libc per specificare l'allocatore di memoria da compilare per libc
Soluzione 2: make clean && make distclean

[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install
[root@localhost utils]# ln -s /usr/local/redis/bin/* /usr/local/bin/

[root@localhost redis-4.0.9]# cd utils/
Tra questi: install_server.sh è lo script di inizializzazione

[root@localhost utilità]# ./install_server.sh
Selezionare il percorso eseguibile di Redis [] /usr/local/redis/bin/redis-server(fornire il percorso dell'eseguibile)

Visualizza il controllo dei processi e dei servizi
[root@localhost utilità]# netstat -anpt | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* ASCOLTA 5360/redis-server 1
[root@localhost utilità]# /etc/init.d/redis_6379 stop(Redis è chiuso)
[root@localhost utilità]# /etc/init.d/redis_6379 inizio(SU)
[root@localhost utilità]# /etc/init.d/redis_6379 stato (stato)

Modifica dei parametri di configurazione
[root@localhost ~]#vim /etc/redis/6379.conf
lega 127.0.0.1 192.168.10.101//Indirizzo dell'host in ascolto
porta 6379 //porta
demonizzare sì //Abilita il processo del demone
file pid /var/run/redis_6379.pid //Specificare il file PID
avviso di livello di registro//livello di registro
file di registro /var/log/redis_6379.log//Specificare il file di registro

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

Strumento di comando 2.redis

[root@localhost utilità]# redis-cli(Accesso locale)
[utilità root@localhost]# redis-cli -h 192.168.10.101 -p 6379(accesso remoto)
192.168.10.101:6379> fare un ping(Il servizio di rilevamento funziona normalmente)
PONG

3: strumento di test redis-benchmark

redis-benchmark è lo strumento ufficiale di test delle prestazioni Redis in grado di testare efficacemente le prestazioni dei servizi Redis.

  • -h: specifica il nome host del server;
  • -p: specifica la porta del server;
  • -s: specifica il socket del server;
  • -c: specifica il numero di connessioni simultanee;
  • -n: specifica il numero di richieste;
  • -d: specifica la dimensione dei dati del valore SET/GET in byte;
  • -k:1=mantieni attivo 0=riconnetti;
  • -r: SET/GET/INCR utilizza chiavi casuali, SADD utilizza valori casuali;
  • -P: trasferimento tramite tubazione<numreq> chiedere;
  • -q: forza l'uscita da Redis. Vengono visualizzati solo i valori query/sec;
  • --csv: output in formato CSV;
  • -l: genera un loop ed esegue il test in modo permanente;
  • -t: esegue solo un elenco separato da virgole di comandi di test;
  • -I: modalità inattiva. Apri solo le connessioni N inattive e attendi.
  • (1) Provare le prestazioni della richiesta

    [root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000

    Nota:

    -h: specifica il nome host del server;

  • -p: specifica la porta del server;

    -c: specifica il numero di connessioni simultanee;

    -n: specifica il numero di richieste;

(2) Testare le prestazioni di accesso

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

Nota:

-h: specifica il nome host del server;

-p: specifica la porta del server;

-d: specifica la dimensione dei dati del valore SET/GET in byte;

-q: Forza l'uscita da Redis. Vengono visualizzati solo i valori query/sec;

  1. 4. Comandi comuni per il database Redis

set memorizza il formato del comando dati imposta il valore della chiave

get Ottieni il formato del comando dati ottieni la chiave

(1) Comandi relativi ai tasti

1. Aggiungi coppie chiave-valore

127.0.0.1:6379&gt; imposta 1 1
OK
127.0.0.1:6379&gt; imposta 2 2
OK
127.0.0.1:6379&gt; imposta 3 3
OK

2. Visualizza tutti i valori nel database

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

3. Visualizzare i dati che iniziano con v nel database
127.0.0.1:6379>CHIAVI v*

4. Visualizzare tutti i dati che iniziano con v nel database

127.0.0.1:6379>CHIAVI v?

5.Visualizza il database corrente con la inizioQuanto segue contiene due cifre qualsiasi di dati

127.0.0.1:6379>CHIAVI v??

(2) esiste

Determinare se il valore esiste.

127.0.0.1:6379>esiste f5Determina se esiste f5

(numero intero) 1 Il risultato è 1, che indica che il tasto F5 esiste

Piace

(intero) 0 Il risultato è 0, che indica che il tasto F5 non esiste

(3)del

del Il comando può eliminare l'oggetto specificato chiave

127.0.0.1:6379> del v5 Elimina v5 nel database

(numero intero) 1

127.0.0.1:6379>ottenere v5

(nullo)

(4) tipo

utilizzo tipo È possibile ottenere il comando chiave corrispondente valore tipo di valore

127.0.0.1:6379>tipo k1

corda

Nota:

Tipi di dati supportati da Redis

  • String: String è il tipo più semplice, ovvero il normale set and get, utilizzato per la memorizzazione nella cache dei valori chiave.
  • Hash: algoritmo hash, una struttura simile alla mappa In generale, i dati strutturati, come un oggetto, possono essere memorizzati nella cache in Redis.
  • Elenco: Elenco è un elenco ordinato. Puoi utilizzare elenco per memorizzare alcune strutture di dati di tipo elenco, come elenchi di fan, elenchi di commenti di articoli, ecc.
  • Set: Set è una raccolta non ordinata che rimuove automaticamente i duplicati.
  • Set ordinato: Set ordinato è un set ordinato, che è deduplicato ma può essere ordinato Durante la scrittura, viene assegnato un punteggio e ordinato automaticamente in base al punteggio.

(5) rinominare

rinominare Il comando è per un esistente chiave rinominare

Nell'uso reale, si consiglia di utilizzare esiste Comando per visualizzare l'obiettivo chiave esiste e quindi decidere se eseguirlo rinominare comando per evitare di sovrascrivere dati importanti.

127.0.0.1:6379>rinomina v22 v2 Rinominare v22 in v2

OK

(6) ridenominazione

rinominare La funzione del comando è modificare l'esistente chiave Eseguire una ridenominazione e verificare se il nuovo nome esiste.

utilizzorinominare Quando il comando viene rinominato, se target chiave Se esiste, non verrà rinominato.

(7) dimensione db

dimensione database Lo scopo del comando è visualizzare il database corrente chiave Numero di.

127.0.0.1:6379> dimensione database

(numero intero) 5

5. Comandi comuni per più database

(1) Passaggio tra più database

Rosso Incluso per impostazione predefinita senza alcuna modifica 16 database, il nome del database è un numero 0-15 da nominare in ordine

(1)Passa al numero di serie 10 Banca dati

127.0.0.1:6379>seleziona 10

OK

(2)Passa al numero di serie 15 Banca dati

127.0.0.1:6379[10]>seleziona 15

OK

(3)Passa al numero di serie 0 Banca dati

127.0.0.1:6379[15]>seleziona 0

(2) Spostamento di dati tra più database

127.0.0.1:6379>impostare k1 100 Crea k1 nel database 0

OK

127.0.0.1:6379>prendi k1

"100"

127.0.0.1:6379>muovi k1 1  //Sposta k1 dal database 0 al database 1

(numero intero) 1

127.0.0.1:6379>seleziona 1   //Passa al database di destinazione 1

OK

127.0.0.1:6379[1]>prendi k1   //Visualizza i dati spostati

"100"

127.0.0.1:6379[1]> seleziona 0

OK

127.0.0.1:6379> prendi k1         //Il valore di k1 non può essere visualizzato nel database 0

(nullo)

(3) Cancellare i dati nel database

Per cancellare i dati del database corrente, utilizzare SVUOTA-DB

Implementazione del comando; cancellare tutti i dati del database, utilizzare FLUSHALL Implementazione del comando.

6. Persistenza di Redis

Rosso Tutti i dati vengono archiviati in memoria e quindi salvati in modo asincrono su disco di volta in volta.(Questo è chiamatoModalità semipersistente”); Puoi anche scrivere ogni modifica dei dati in a aggiungi solo file (aof)In(Questo è chiamatoModalità di persistenza completa”)

Perché Rosso Tutti i dati vengono archiviati in memoria Se la persistenza non è configurata,Rosso Dopo il riavvio, tutti i dati andranno persi.Pertanto, è necessario abilitareRosso La funzione di persistenza salva i dati su disco Quando Rosso Dopo un riavvio, i dati possono essere recuperati dal disco.Rosso Sono forniti due metodi per la persistenza, uno è RDBBanca dati Redis Persistenza (il principio è quello di ReidiDump temporizzato dei record del database in memoria (scarico)su disco RDB persistenza), l'altro lo è AOFaggiungere solo filePersistenza (il principio è quello di Reidi Il registro delle operazioni viene scritto nel file in modo aggiunto).

La differenza tra RDB e AOF

ROB scrive l'istantanea dei dati sul disco entro l'intervallo di tempo specificato. È un sottoprocesso del fork. Innanzitutto scrive i dati in una cartella temporanea. Dopo aver eseguito correttamente, sostituirà il file precedente e lo memorizzerà con la compressione binaria.

AOF registra ogni operazione di scrittura ed eliminazione del server sotto forma di registro. Le operazioni di query non verranno registrate, ma saranno registrate in forma testuale.

 

Vantaggi e svantaggi di RDB e AOF

Vantaggi dell'RDB:

RDB è un file binario compatto e compresso che rappresenta un'istantanea dei dati Redis in un determinato momento. È molto adatto per backup, copia completa e altri scenari. Ad esempio, esegui il backup bgsave ogni 6 ore e copia il file RDB sul computer remoto o sul file system per il ripristino di emergenza.

Il recupero dei dati è veloce.

Massimizza le prestazioni

Elevata efficienza di avvio

RDBdiscordanza:

I dati che non sono stati salvati prima dello spegnimento andranno persi.

       RDB viene completato attraverso il processo figlio fork, consumando risorse.

Vantaggi dell'AOF:

La durabilità dei dati è elevata

Nella modalità di aggiunta, il contenuto del file di registro non verrà distrutto anche in caso di inattività.

Il meccanismo di riscrittura può essere avviato per proteggere la sicurezza dei dati.

Svantaggi dell'AOF:

La velocità di recupero dei dati AOF è lenta

L'efficienza operativa dell'AOF è bassa

Criteri per la scelta tra i due:

Sacrificare alcune prestazioni in cambio di una maggiore coerenza della cache (AOF),

Quando le operazioni di scrittura sono frequenti, non abilitare il backup in cambio di prestazioni più elevate e attendere l'operazione manuale. salva quando, esegui nuovamente il backup (RDB

Nota:

Se Redies necessita di caricare un file di persistenza dopo il riavvio,prioritàVerranno selezionati i file AOF.

Se viene abilitato prima RDB e poi AOF, e prima viene reso persistente RDB, il contenuto del file RDB verrà sovrascritto da AOF.

7. Configurazione della persistenza Redis

(1) Configurazione della persistenza RDB

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

Aprire 6379.conf Dopo il file, cerca salva, è possibile visualizzare le informazioni di configurazione come mostrato di seguito.

  • save 900 1: dopo 900 secondi (15 minuti), se cambia almeno 1 chiave, scarica l'istantanea della memoria.
  • save 300 10: dopo 300 secondi (5 minuti), se sono cambiate almeno 10 chiavi, scarica l'istantanea della memoria.
  • save 60 10000: dopo 60 secondi (1 minuto), se sono state modificate almeno 10000 chiavi, esegue il dump dello snapshot della memoria.
  • dbfilename dump.rdb: nome file RDB ##254 riga
  • dir /var/lib/redis/6379: percorso file RDB ##264 riga
  • rdbcompression yes: indica se comprimere la riga ##242

(2) Configurazione della persistenza AOF

esistere Rosso Esistono tre metodi di sincronizzazione nel file di configurazione:

  • appendonly sìAttiva la persistenza AOF (il valore predefinito è no) ##673 riga
  • appendfilename "appendonly.aof " Nome file AOF ##677 riga
  • # appendfsync sempre
  • appendfsync ogni secondo
  • # appendfsync no

sempre: persistenza sincrona, ogni volta che i dati cambiano, verranno scritti immediatamente sul disco ##702 riga

ogni secondo: consigliato per impostazione predefinita, registra in modo asincrono ogni secondo (valore predefinito)

no: nessuna sincronizzazione, lasciando al sistema operativo la decisione su come sincronizzarsi

  • aof-load-troncato sì ##769行

Ignora l'ultima istruzione potenzialmente problematica

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

8. Problemi di prestazioni

(1) Visualizza le informazioni sulla memoria

192.168.9.236:7001> memoria informativa

memoria_usata:1210776 Dimensione della memoria utilizzata, in byte
memoria_umana_usata:1,15MVisualizzato con unità, in M
memoria_usata_rss:7802880Quanta memoria occupa Redis dal punto di vista del sistema operativo?
memoria_usata_rss_umano:7.44MVisualizzazione con unità
memoria massima:1073741824Dimensione massima della memoria
memoria_umana massima:1,00G Visualizzazione con unità

(2) Strategia di riciclaggio

politica-maxmemory: Strategia di riciclaggio

 volatile-lru: permette Rosso Scegli quello utilizzato meno di recente dall'intero set di dati chiave Eliminare

 volatile-ttlEliminare in base all'ora di scadenza della chiave 

 volatile-casuale: seleziona in modo casuale i dati da eliminare dalla raccolta dati con data di scadenza impostata;

 tutti i tasti-lru:utilizzo LRU Gli algoritmi eliminano i dati da tutti i set di dati;

 tutti i tasti-casuale: selezionare in modo casuale i dati da eliminare dalla raccolta dati;

 non sfratto: Disabilita l'eliminazione dei dati (valore predefinito)

Imposta la scadenza della chiave

127.0.0.1:6379>scadenza v1 10 v1 ha una scadenza di 10 secondi

Nota:

Quando Rosso È necessario recuperarne uno a causa della pressione della memoria chiave ora,Rosso La prima considerazione non è riciclare i dati più vecchi, ma quelli utilizzati meno di recente. chiave o in scadenza chiave Scegline uno a caso tra chiave, rimosso dal set di dati