Condivisione della tecnologia

03-Configurazione e ottimizzazione NoSQL Redis

2024-07-12

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

1. Confronto generale tra redis e memcache

1.Prestazioni

Redis: utilizza solo un singolo core In media, Redis ha prestazioni più elevate di Memcached quando archivia piccoli dati su ciascun core.

Memcached: puoi utilizzare più core e, con dati superiori a 100k, le prestazioni di Memcached sono superiori a quelle di Redis.

2. Efficienza nell'utilizzo della memoria

MemCached: utilizzando un semplice archivio di valori-chiave, Memcached ha un utilizzo della memoria più elevato.

Redis: se viene utilizzata una struttura hash per l'archiviazione di valori-chiave, il suo utilizzo della memoria sarà maggiore rispetto a Memcached a causa della sua compressione combinata.

3. Spazio di memoria e dimensione dei dati

MemCached: la memoria massima può essere modificata utilizzando l'algoritmo LRU. La dimensione di un singolo valore-chiave in Memcached è limitata e un valore supporta solo un massimo di 1 MB.

Redis: aggiunge funzionalità VM e supera i limiti della memoria fisica. Redis supporta una dimensione massima di un singolo valore-chiave di 512 MB.

4.Supporto della struttura dei dati

MemCached: struttura dati singola, utilizzata solo per memorizzare nella cache i dati.

Redis: supporta tipi di dati più ricchi Redis non solo supporta semplici dati di tipo k/v, ma fornisce anche l'archiviazione di strutture di dati come list, set, zset e hash.

È possibile eseguire operazioni avanzate sui dati direttamente sul lato server, riducendo i tempi di I/O della rete e il volume dei dati.

5.Affidabilità

Memcached: è solo una cache di memoria con bassi requisiti di affidabilità. MemCached non supporta la persistenza dei dati I dati scompaiono dopo un'interruzione di corrente o un riavvio, ma la stabilità è garantita.

Redis: ha requisiti di affidabilità elevati, supporta la persistenza e il ripristino dei dati, consente singoli punti di errore e influisce anche su alcune prestazioni. Supporta il backup dei dati, ovvero il backup dei dati in modalità master-slave. Redis supporta la persistenza dei dati e può salvare i dati in memoria su disco e caricarli nuovamente per utilizzarli al riavvio.

6. Scenari applicativi

Memcached: riduce il carico del database e migliora le prestazioni nella cache dei sistemi dinamici, adatto per scenari con più letture, meno scritture e grandi volumi di dati.

Redis: adatto a sistemi che richiedono un'elevata efficienza di lettura e scrittura, attività di elaborazione dati complesse ed elevati requisiti di sicurezza.

2. Casi sperimentali

1.installazione di Redis

Disattiva prima il firewall

  1. 先把防火墙关掉
  2. systemctl stop firewalld
  3. set setenforce 0
  4. [root@localhost ~]# yum -y install gcc* zlib-devel
  5. 解压 redis包
  6. [root@localhost ~]# tar xvzf redis-4.0.9.tar.gz
  7. [root@localhost ~]# cd redis-4.0.9/
  8.  make

  1. 2:查看进程
  2. [root@localhost utils]# netstat -anpt | grep redis

  1. 3:redis服务控制
  2. [root@localhost ~]#/etc/init.d/redis_6379 stop
  3. [root@localhost ~]#/etc/init.d/redis_6379 start
  4. [root@localhost ~]#/etc/init.d/redis_6379 restart
  5. [root@localhost ~]#/etc/init.d/redis_6379 status

  1. 4.配置参数的修改
  2. [root@localhost ~]#vim /etc/redis/6379.conf
  3. bind 127.0.0.1 192.168.10.101 //监听的主机地址
  4. port 6379 //端口
  5. daemonize yes //启用守护进程
  6. pidfile /var/run/redis_6379.pid //指定 PID 文件
  7. loglevel notice //日志级别
  8. logfile /var/log/redis_6379.log //指定日志文件
  9. [root@localhost~]#/etc/init.d/redis_6379 restart
  10. [root@localhost utils]# netstat -anpt | grep redis

  1. 二:Redis 命令工具
  2.  redis-server:用于启动 Redis 的工具;
  3.  redis-benchmark:用于检测 Redis 在本机的运行效率;
  4.  redis-check-aof:修复 AOF 持久化文件;
  5.  redis-check-rdb:修复 RDB 持久化文件;
  6.  redis-cli:Redis 命令行工具。

Comandi Redis comuni:

imposta crea
ottenere la vista
chiavi *vedi tutti
rinomina (sovrascriverà)
renamenx (controlla se c'è lo stesso nome, e poi decidi se eseguire il comando rename,)
del (il comando può eliminare la chiave specificata del database corrente)
esiste (il comando può determinare se il valore della chiave esiste)
type (usa il comando type per ottenere il tipo di valore corrispondente alla chiave)
seleziona (cambia database)
spostare (spostare i dati)
flushdb (cancella i dati del database corrente)
flushall (cancella tutti i dati del database)

  1.  -p:指定服务器端口;
  2.  -s:指定服务器 socket;
  3.  -c:指定并发连接数;
  4.  -n:指定请求数;
  5.  -d:以字节的形式指定 SET/GET 值的数据大小;
  6.  -k:1=keep alive 0=reconnect;
  7.  -r:SET/GET/INCR 使用随机 key, SADD 使用随机值;
  8.  -P:通过管道传输<numreq>请求;
  9.  -q:强制退出 redis。仅显示 query/sec 值;
  10.  --csv:以 CSV 格式输出;
  11.  -l:生成循环,永久执行测试;
  12.  -t:仅运行以逗号分隔的测试命令列表;
  13.  -I:Idle 模式。仅打开 N 个 idle 连接并等待。

Cinque: 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 ReidiTempi di registrazione del database in memoria scarico su disco RDB persistenza), l'altro lo è AOFaggiungi solo filePersistenza (il principio è quello di Reidi Il registro delle operazioni viene scritto nel file in modo aggiunto).

1: La differenza tra RDB e AOF

(1) Cos'è l'RDB?

Il metodo predefinito

La persistenza RDB è il processo di generazione di un'istantanea dei dati di processo correnti e di salvataggio sul disco rigido. Il processo di attivazione della persistenza RDB è suddiviso in attivazione manuale e attivazione automatica.

Meccanismo di attivazione: l'attivazione manuale corrisponde rispettivamente ai comandi save e bgsave.

comando save: blocca il server Redis corrente fino al completamento del processo RDB. Per le istanze con una grande quantità di memoria, causerà un blocco temporale. Non consigliato per l'uso in ambienti online.

Comando bgsave: il processo Redis esegue l'operazione fork (funzione utilizzata per creare un processo) per creare un processo figlio. Il processo di persistenza RDB è responsabile del processo figlio e termina automaticamente dopo il completamento. Il blocco avviene solo durante la fase di fork.

(2) Vantaggi e svantaggi di RDB:

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.

Redis carica RDB e recupera i dati molto più velocemente del metodo AOF.

Svantaggi dell'RDB:

I dati in modalità RDB non possono raggiungere la persistenza in tempo reale/persistenza di secondo livello. Poiché ogni volta che viene eseguito bgsave, viene eseguita un'operazione di fork per creare un processo figlio, che è un'operazione pesante e il costo di un'esecuzione frequente è troppo alto.

I file RDB vengono salvati in un formato binario specifico Durante l'evoluzione delle versioni Redis, esistono più formati di versioni RDB. Si verifica un problema che la vecchia versione del servizio Redis non è compatibile con la nuova versione del formato RDB.

2. Cos'è l'AOF?

Persistenza AOF (aggiunta solo file): registra ogni comando di scrittura in un registro indipendente, quindi riesegui il comando nel file AOF per ripristinare i dati al riavvio. La funzione principale di AOF è risolvere il problema in tempo reale della persistenza dei dati. Ora è la corrente principale della persistenza di Redis.

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 è necessario caricare un file persistente dopo il riavvio dei redies, 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.

3: 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 tasto, 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, scarica l'istantanea 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ì: abilita 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

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

(2) Riscrittura AOF

per risolvere AOF Se la dimensione del file continua ad aumentare, gli utenti possono segnalarlo Rosso Inviare BGREWRITEAOFOrdine.BGREWRITEAOF Il comando verrà rimosso tramite AOF comandi ridondanti nel file da sovrascrivere (riscrivereAOFarchiviare, creare AOF Mantieni la dimensione del file quanto più piccola possibile.

127.0.0.1:6379&gt; bgrewriteaof

Avviata la riscrittura del file di aggiunta solo in background

# Quando il registro è BGREWRITEAOF,Seno-appendfsync-durante-la-riscritturaImpostato su sì, il che significa che le nuove operazioni di scrittura non verranno sincronizzate con fsync, ma verranno archiviate solo temporaneamente nel buffer. , per evitare conflitti nelle operazioni di I/O del disco, attendere il completamento della riscrittura prima di scrivere. L'impostazione predefinita in Redis è no

no-appendfsync-on-rewrite no

# Quando la dimensione corrente del file AOF è doppia rispetto alla dimensione del file AOF durante l'ultima riscrittura del registro, si verifica l'operazione BGREWRITEAOF.

percentuale di riscrittura automatica aof 100

Nota:

100Si riferisceadiIl rapporto di crescita del file si riferisce al rapporto di crescita del file AOF corrente rispetto all'ultima riscrittura.100è due volte

#Il valore minimo del file AOF corrente per eseguire il comando BGREWRITEAOF per evitare frequenti BGREWRITEAOF a causa delle dimensioni ridotte del file al primo avvio di Reids.

auto-aof-rewrite-min-size 64mb

Sei: gestione delle prestazioni

1: Visualizza le informazioni sulla memoria

192.168.9.236:7001> memoria informativa

used_memory:1210776 #La dimensione della memoria utilizzata,in byte
used_memory_human:1.15M # Display con unità,a M
used_memory_rss:7802880 # Quanta memoria occupa redis dal punto di vista del sistema operativo?
used_memory_rss_human:7.44M # Display con unità
maxmemory:1073741824 # Dimensione massima della memoria
maxmemory_human:1.00G # Display 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-ttlsecondochiavescadenza per l'eliminazione

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

Nota:

Imposta la scadenza della chiave

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

reimpostare la password

1. Metodo di impostazione

Metodo 1: impostare la password tramite il file di configurazione redis.conf

Trova la parola chiave requirepass, seguita dalla password. Per impostazione predefinita è commentata, ovvero non è richiesta alcuna password, come segue:

  

 Apri il commento, impostalo come password e riavvia

Metodo 2: imposta la password nominandola

Utilizzare redis-cli per connettersi a redis ed eseguire il comando seguente

config set requirepass 123456

Una volta completata l'esecuzione, non è necessario riavviare. Sarà necessario inserire la password quando si esce dal client e si accede nuovamente.

2. Metodo di connessione

1. Immettere la password durante la connessione

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

2. Connettersi prima e poi inserire la password

[root@localhost bin]# ./redis-cli127.0.0.1:6379> auth 123456

3. Metodo Chiudi

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

4. Differenza

1) La password impostata modificando il file di configurazione avrà effetto in modo permanente; la password impostata utilizzando il comando avrà effetto temporaneo e diventerà non valida dopo il riavvio.

2) La modifica della password impostata nel file di configurazione richiede un riavvio per avere effetto; utilizzare la password impostata dal comando per avere effetto dopo essersi disconnessi e aver effettuato nuovamente l'accesso e diventerà non valida dopo il riavvio.

3) La priorità del comando è superiore alla priorità del file di configurazione