Redis è scritto in ANSI C e nasce prevalentemente per sistemi Unix-like, tanto che non viene nemmeno supportata ufficialmente
la versione per Windows, che è curata direttamente
dal gruppo Microsoft Open Tech. Le versioni ufficiali possono essere invece reperite alla pagina di download del sito ufficiale.
Installazione
Per installare Redis su Linux, è necessario seguire questi passi:
- scaricare il pacchetto di installazione in formato .tar.gz;
- estrarre il contenuto del pacchetto;
- compilare il progetto.
Il tutto potrà essere eseguito con i seguenti comandi (il numero di versione va adattato a quello utilizzato):
$ wget http://download.redis.io/releases/redis-4.0.2.tar.gz
$ tar xzf redis-4.0.2.tar.gz
$ cd redis-4.0.2
$ make
Una volta eseguita la compilazione, all'interno della stessa cartella dei sorgenti src troveremo due script:
- redis-server: attiva il server vero e proprio. Una volta lanciato questo comando, avremo Redis in esecuzione nel nostro sistema operativo;
- redis-cli: la console interattiva, lo strumento primario con cui potremo interagire con il sistema per svolgere qualsiasi operazione. Con questa console sperimenteremo la maggior parte delle nozioni che vedremo nella guida.
Avvio e prime operazioni
Nella stessa cartella del progetto troviamo il file di configurazione del servizio redis.conf e nella guida non mancherà occasione per analizzarne i contenuti. Un aspetto di interesse particolare al momento del primo avvio del servizio è la porta TCP su cui esso verrà avviato. Di default, è la numero 6379 e proprio a questa si connetterà redis-cli quando richiederemo una console per lavorare.
Se avviamo Redis semplicemente con:
$ src/redis-server
la console interattiva risponderà così:
$ src/redis-cli
127.0.0.1:6379>
In alternativa, possiamo modificare la configurazione o avviare Redis su una diversa porta TCP, scelta direttamente in fase di avvio:
$ src/redis-server --port 55555
Così, indipendentemente dalla configurazione in redis.conf, il server sarà in esecuzione sulla porta 55555 e a questa
dovremo connetterci con il comando redis-cli:
$ src/redis-cli -p 55555
127.0.0.1:55555>
Anche senza conoscere ancora Redis, possiamo iniziare a provare la CLI richiedendo informazioni sul sistema
con il comando INFO
:
127.0.0.1:6379> INFO
# Server
redis_version:4.0.2
redis_git_sha1:00000000
redis_git_dirty:0
...
...
Mentre digitiamo comandi nella CLI, appaiono a destra del cursore suggerimenti su quali opzioni possono/devono accompagnare la direttiva. Nel caso di INFO
, apparirà l'indicazione "[section]" che suggerisce di specificare il nome di una sezione per avere solo le informazioni di un determinato ambito. Nell'output di INFO
, troveremo delle righe che iniziano con il simbolo cancelletto (#
) che rappresentano proprio l'inizio di una sezione come si può notare nello stralcio di output precedente. Ad esempio, con INFO Server
verranno fornite solo le informazioni riguardanti il server.
I due usi della CLI
Quanto visto sinora è solo uno dei due usi della CLI di Redis, quello REPL (Read-Eval-Print-Loop), la console interattiva per intenderci. L'altro uso prevede l'invio di comandi a Redis direttamente dalla riga di comando del sistema operativo con la possibilità di ottenere di ritorno l'output in modo da poterlo sfruttare con strumenti tradizionali. Ad esempio, se vogliamo solo estrarre un'informazione dall'output di INFO potremo usare (dalla shell di Linux) il seguente comando
$ src/redis-cli INFO | grep port
tcp_port:6379
Opzioni interessanti e utili per diversi usi sono le opzioni -r
e -i
per redis-cli, che servono per la ripetizione di istruzioni: -r introduce il numero di esecuzioni mentre -i specifica il ritardo in secondi che deve intercorrere tra un'esecuzione e l'altra. Un esempio piuttosto eloquente lo si può avere con il comando TIME
che fornisce l'orario registrato dal server Redis restituendo due valori: il timestamp in secondi e i microsecondi:
$ src/redis-cli TIME
1) "1510274641"
2) "705119"
Potremo richiederne l'esecuzione ripetuta cinque volte, ognuna a distanza di un secondo dall'altra così facendo:
$ src/redis-cli -r 5 -i 1 TIME
1) "1510274653"
2) "705119"
1) "1510274654"
2) "705897"
1) "1510274655"
2) "708201"
1) "1510274656"
2) "710560"
1) "1510274657"
2) "713261"