IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Redis es un motor de base de datos en memoria, basado en el almacenamiento en tablas de hashes (clave/valor) pero que opcionalmente puede ser usada como una base de datos durable o persistente. Está escrito en ANSI C por Salvatore Sanfilippo quien fue patrocinado por VMware1 2 y, a partir de 2013, por Pivotal Software.3 Está liberado bajo licencia BSD por lo que es considerado software de código abierto.

Algunes utilitzats de Redis les podem trobar en l'ús que es fa a projectes Laravel per exemple per a treballar amb Cache o com a suport per a esdeveniments push conjuntament amb socket.io.

Instal·lació

$ sudo apt-get install redis-server redis-tools

Redis CLI

$ redis-cli
127.0.0.1:6379> 

Ho podeu executar comandes directament:

$ redis-cli ping
PONG

Entre les comandes interessant monitoritzar (veure el que passa al servidor com per exemple els hits de cache i similars):

$ redis-cli monitor
OK
...

Redis server

Homestead el porta executat de sèrie al port 6379:

$ ps aux | grep redis
redis      986  0.0  0.2  80316 23720 ?        Ssl  Oct17   1:12 /usr/bin/redis-server *:6379               


El podeu també iniciar manualment:

$ redis-server --port 3001
4478:M 18 Oct 07:41:00.043 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
4478:M 18 Oct 07:41:00.043 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.
4478:M 18 Oct 07:41:00.043 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
                _._                                                  
           _.-``__ -._                                             
      _.-``    `.  `_.  -._           Redis 3.0.4 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ -._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 3001
 |    `-._   `._    /     _.-'    |     PID: 4478
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

4478:M 18 Oct 07:41:00.044 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
4478:M 18 Oct 07:41:00.044 # Server started, Redis version 3.0.4
4478:M 18 Oct 07:41:00.044 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take  effect.
4478:M 18 Oct 07:41:00.045 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and  add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
4478:M 18 Oct 07:41:00.049 * The server is now ready to accept connections on port 3001

Redis i Laravel

Vegeu Redis i Laravel

Persistència

Es pot forçar el salvar les dades en memòria a disk amb la comanda save:

> save

El sistema també fa saves automàtics els podeu consultar al fitxer /etc/redis/redis.conf:

 ...
 ################################ SNAPSHOTTING  ################################
#
# Save the DB on disk:
#
#   save <seconds> <changes>
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#
#   Note: you can disable saving completely by commenting out all "save" lines.
#
#   It is also possible to remove all the previously configured save
#   points by adding a save directive with a single empty string argument
#   like in the following example:
#
#   save ""

save 900 1
save 300 10
save 60 10000

Recursos:

Backups

Normalment les dades de Redis les trobareu a la carpeta:

/var/lib/redis

Però en tot cas podeu seguir diverses estratègies com:

$ sudo locate *rdb

per localitzar els fitxers rdb per exemple:

/var/lib/redis/dump.rdb

$ redis-cli

Si dona error:

Output
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>

Segurament el servidor Redis no està operatiu:

$ sudo service redis-server start

Ara:

$ redis-cli
127.0.0.1:6379>

Pot ser possible que necessiteu authenticació

> auth insert-redis-password-here

Finalment escrivint:

> config get dir
1) "dir"
2) "/var/lib/redis"

Per restaurar els passos són, 1) apagar el servidor:

$ sudo service redis-server stopt

2) recupereu el backup:

$ sudo cp -p /home/sammy/redis/dump.rdb /var/lib/redis

Assegureu-vos dels permisos adequats:

$ sudo chown redis:redis /var/lib/redis/dump.rdb

i:

$ sudo chmod 660 /var/lib/redis/dump.rdb

i torneu a iniciar el servidor:

$ sudo service redis-server start

Recursos:

https://www.digitalocean.com/community/tutorials/how-to-back-up-and-restore-your-redis-data-on-ubuntu-14-04

Vegeu també

Enllaços externs