Redis sur NAS Synology

Aujourd’hui il va être question de Redis pour NAS Synology. Qu’est-ce que Redis me direz vous ?

Pour faire simple, il s’agit d’un gestionnaire de clef-valeur. Il peut être utilisé notamment pour accélérer les sites web en proposant un système de cache où l’intégralité des  données de Redis sont dans la mémoire vive.

Du fait de ne plus passer par les disques pour l’accès aux données, cela permet d’obtenir des temps d’accès très courts et une expérience utilisateur améliorée 🙂

On peut citer notamment l’offre Amazon Web Service qui propose cet outil open source dans sa gamme de services.

 

Installation

Commencez à ajouter DigitalBox Repo à votre centre de paquets en entrant l’URL http://digital.box.free.fr/sspks :

nextcloud-1

Cette version de Redis a également été proposée sur SynoCommunity et approuvée. Vous pourrez également vous la procurer sur cette source reconnue de paquets.

Vous devriez voir apparaitre le package Redis :

redis-1

Cliquez sur l’icône associée et lancez l’installation :

redis-2

Si tout se passe bien, le serveur Redis devrait être dans le statut « En cours d’exécution » :

redis-3

Vérification

Pour vérifier que votre serveur Redis fonctionne, connectez-vous en SSH sur votre NAS et lancez la commande suivante :

cd /var/packages/redis/target/bin
./redis-cli

La commande « ping » permet de vérifier que le serveur est bien fonctionnel sur le port par défaut 6379 :

utilisation-1

C’est bien le cas, vous pourrez constater la petite note d’humour dans la réponse 🙂

 

Utilisation

Redis permet de stocker et de récupérer des données sous la forme clef-valeur. Il utilise des types de données simples : chaînes de caractères, tableaux associatifs, listes, ensembles, …

types

Par exemple, si vous souhaitez stocker et récupérer des numéros de session en mémoire sur votre NAS, il suffira d’utiliser les commandes set / get :

utilisation-2

Ici la session « sessionid » a été définie à 12345.

Redis permet aussi de manipuler les données stockées en mémoire, comme par exemple incrémenter la valeur :

utilisation-3

Notez que sous son aspect basique Redis peut s’avérer redoutablement efficace en terme de performance et il propose également beaucoup de fonctionnalités. La liste exhaustive des commandes est disponible via ce lien.

En lançant un benchmark sur mon NAS DS716+II via la commande associée, voici les résultats obtenus :

./redis-benchmark

benchmark

Cela signifie que 100 000 accès ont été réalisés en 3 secondes. La réponse se faisant en moins de 6 ms pour chaque demande.

 

Activation de Redis dans PHP

C’est bien beau tout ça, mais pour utiliser le potentiel de Redis, il faut qu’il puisse être utilisé avec les langages les plus courants. C’est bien le cas, puisqu’on retrouve des modules pour PHP, NodeJS, et la plupart des autres langages actuels.

Attardons nous sur PHP car il peut avoir une utilité pour NextCloud ou encore WordPress.

Le module qui permet d’utiliser Redis en PHP s’appelle PHP Redis.

Pour une raison qui m’échappe, Synology propose dans le paquet PHP 7.3 le module qui permet d’utiliser Redis,  mais celui-ci n’est pas accessible directement.

Voici comment l’activer.

Installez tout d’abord PHP 7.3 :

php-1

Utilisez ensuite pour votre serveur Web le serveur « Apache 2.4 » et modifiez le profil « PHP » :

php-2

Le profil « PHP » doit correspondre à la version « PHP 7.3 » :

php-3

Si vous allez dans les extensions, vous pourrez voir que « redis » n’est pas proposé.

Validez votre choix pour prendre en compte les modifications.

php-4

Comme je l’ai indiqué le module est bien présent. Il suffit de taper la commande ci-dessous pour voir que la bibliothèque redis.so a bien été installée avec le paquet PHP 7.3 :

ls /volume1/@appstore/PHP7.3/usr/local/lib/php73/modules/redis.so

/volume1/@appstore/PHP7.3/usr/local/lib/php73/modules/redis.so

 

Pour ajouter le module « redis » dans les extensions PHP, deux manipulations sont à faire :

  • Ajouter l’extension « redis » à PHP
sudo vi /usr/local/etc/php73/cli/conf.d/extension.ini

Ajoutez la ligne suivante juste après l’extension « posix.so » :

extension = redis.so
  • Modifier la liste des extensions PHP visibles dans DSM :
sudo vi /volume1/@appstore/PHP7.3/misc/extension_list.json

Ajoutez les lignes ci-dessous juste à après la partie « posix » :

"redis": {
"enable_default": true,
"desc": "The phpredis extension provides an API for communicating with the Redis key-value store."
},

Pour prendre en compte ces modifications changez le profil PHP vers une autre version (comme la 7.2), validez, puis revenez ensuite à la version 7.3 :

php-5

L’extension « redis » est maintenant visible et cochée !

Vérifions via la commande « phpinfo() » dans une page PHP sur le NAS : l’extension est bien affichée également.

php-6

Une autre manière de vérifier que ce module fonctionne est de taper la ligne de commande suivante :

php73 -r "if (new Redis() == true){ echo \"\r\n OK \r\n\"; }"

Le retour doit être :

 OK 

De même, vous pouvez lister les modules PHP via la commande :

 php73 -m | grep redis

Pour confirmer que le module est bien présent :

redis

 

Cas pratique PHP

Voici un exemple de code PHP qui permet de se connecter à votre serveur Redis et définir la valeur de « sessionid » (notez que le serveur n’a pas de mot de passe ici) :

<?php

$redis = new Redis();

// Connection to Redis
$redis->connect('127.0.0.1', 6379);
//$redis->auth('password');

// OK
if ($redis->ping()) {
    echo "Connected to Redis server<br>";
    $redis->set("sessionid", "12345");
    echo "SessionId : ";
    var_dump($redis->get("sessionid"));
}

// Not possible
else {
  echo "Can't connect to server<br>";
}

?>

Le résultat obtenu dans un navigateur est celui-ci :

php-7

Pour aller plus loin

wp-redisIl est tout à fait imaginable d’utiliser WordPress ou encore NextCloud avec Redis afin d’améliorer les temps de réponse. Cela sera peut être l’occasion d’un prochain article.

J’ai également pu cross-compiler une extension plus récente de PHP Redis (la 5.1.1) et l’installer sur mon NAS.

Avec cette méthode, cela laisse l’opportunité de proposer des versions plus récentes des extensions PHP ou pourquoi pas de nouvelles extensions 🙂

 

 

3 réflexions sur “Redis sur NAS Synology

  1. Bonjour,
    Source intéressante, mais le package REDIS n’est pas disponible pour DS220+ à cette date.
    Peut-on espérer que ce soit prochainement le cas ?
    Merci d’avance.

    J'aime

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s