Moteur de cache - Prise en charge de REDIS

Bonjour,

En scrutant le code source, je me suis aperçu de ceci :

Fichier class/cache.class.php

case 'RedisCache':
            $redis = new Redis();
            $redisAddr = config::byKey('cache::redisaddr');
            if (strncmp($redisAddr, '/', 1) === 0) {
                $redis->connect($redisAddr);
            } else {
                $redis->connect($redisAddr, config::byKey('cache::redisport'));
            }
            self::$cache = new \Doctrine\Common\Cache\RedisCache();
            self::$cache->setRedis($redis);
            break;
            default:
            self::$cache = new \Doctrine\Common\Cache\FilesystemCache(self::getFolder());
            break;

La prise en charge de Redis semble être implémentée. Serait-il possible d’ajouter simplement la possibilité de le configurer dans la page de configuration de cache afin que cela soit plus « simple » ?

Merci

Salut,

Je suis d’accord avec toi :slight_smile: mais cela n’a pas l’air d’intéresser grand monde /D
Et par la même occasion et plutôt plus généralement, avoir une doc sur l’optimisation de jeedom via un autre cache que filesystem.

Peut être qu’un guru pourra venir nous en dire plus?

Merci en tout cas pour le boulot fait jusqu’ici :wink:

1 « J'aime »

100% d’accord avec toi :slight_smile: je viens de passer plusieurs heures a essayer de faire ca via un reverse proxy HAProxy mais bon c’est pas… probant /D

Pour ma part, je souhaite, dans un premier temps, tenter de faire communiquer mon conteneur Jeedom avec mon conteneur Redis.
J’utilise Redis avec Nextcloud et Vault (pour la gestion des secrets).
Dès que je pourrais, je vais tenter de passer du temps sur le sujet. Après tout, si les premières briques sont là, il se peux que ce soit juste un peu de config à faire.

A tester

Dans la configuration de mon Jeedom (https://jeedom.xx/index.php?v=d&p=administration#cachetab), je ne peux que sélectionner « Système de fichiers ».
Savez-vous comment activer l’utilisation d’un autre moteur de cache ?
J’utilise Redis pour Nextcloud et j’aimerais aussi que Jeedom puisse bénéficier de cet outil externe.

1 « J'aime »

Bonjour à tous,

Je me suis posé la même question pour augmenter les perfs de ma plateforme de « stress-test ».

En fait tout ça est déjà implémenté dans Jeedom :

Ca c’est la question qui tue !
Pour « faire apparaitre » les options Memcached et Redis :

Il suffit d’installer les packages des modules PHP et rebooter Jeedom (ou relancer Apache+PHP) :

sudo apt install php-memcache php-redis
sudo reboot

La question est donc plutôt « pourquoi ne sont-ils pas installés par défaut ? »

Si vous voulez mettre le cache en local, il faut installer :
Memcached : sudo apt install memcached
Ou Redis-server : sudo apt install redis-server

Une fois le cache changé dans la config de Jeedom, il est demandé/recommandé de re-redémarrer.

Je suis parti sur Memcache, mais voici un comparatif :


Source : Redis™ vs Memcached - Choosing a Caching Solution

Attention quand même

  • Je n’ai trouvé aucun système, dans le code de Jeedom, migrant les données du cache existant vers le nouveau cache. Donc, le fait de passer vers un nouveau système de cache, vide purement et simplement le cache !
  • Si vous changez de cache, les valeurs en place dans le nouveau cache sont utilisée. Donc : quand on migre vers un cache vide => pas (trop) de problème, mais quand on migre vers un cache déjà alimenté par le passé => de (très) anciennes valeurs peuvent revenir pourrir les historiques, les scenarios, etc
  • Si vous vous plantez dans les valeurs entrées dans Jeedom ou lors de la config du cache, il n’y a pas de pre-check, pas de filet de secours, donc cache inaccessible => Jeedom qui se vautre en boucle.

Voilà, voilà et z’êtes prévenus :wink:

Bonne journée,
Bad

La vrai question c’est quel avantage pensez-vous trouver à utiliser un autre moteur de cache?
pas sur que jeedom en usage domestique, seul dans son coin, va gagner à utiliser memcached ou redis vs filesystem mais il faudrait benchmarl et avoir les chiffres pour savoir

edit: j’ai fait le test rapidement chez moi avec memcached et sur mon install je gagne en écriture mais je perd l’équivalent en lecture.
Je n’ai pas l’analyse complète mais je parierais plutôt qu’on lit plus souvent le cache que ce qu’on écrit, si c’est le cas mieux vaut rester sur un cache filesystem.

Ok merci pour les infos.
Vu ce qui est expliqué par Mips et vus les risques en cours de changement, je vais rester sur les fichiers en local.

Je déterre la discutions, mais monter son /tmp en RAM (tmpfs) suffit déjà à améliorer les performances.

/tmp est déjà monté en ramfs

OK, je suis en DIY et je croyais que c’étais moi qui avais fait cette optimisation :-).

Bonjour,
Comment peut-on vérifier que le /tmp est monté en ram ou pas ? Et comment le faire si ce n’est pas déjà fait ?

Autre question, dans le cas où mon jeedom est dans un container docker, je dois donc monter le /tmp du container dans la ram de l’host - ça parait logique - c’est possible nativement ? Ou bien il faut partager le /tmp avec un rép de l’host, lequel sera à son tour monté en ram ?

merci

Bonjour
Regarde la documentation d’installation en mode docker je l’ai mise a jour il y a quelques semaines en ajoutant une partie avec docker compose qui permet d’avoir le tmp en ram.