Redis - Didacticiels

Comment provisionner un PaaS Redis ?

Pour commencer, rendez-vous sur ITCare et recherchez votre service global cible où vous créerez votre nouveau déploiement Redis.

Recherchez votre service Global dans la barre de recherche supérieure et cliquez dessus pour afficher sa page d'information.

Une fois dans votre Service Global, cliquez sur le bouton Créer une ressource, sélectionnez Redis et la version requise.

Remplir le formulaire :

  • Sélectionner une topologie

  • Définir le nom du futur déploiement

  • Le dimensionnement

  • Le stockage requis sur chaque instance

  • La localisation cible

  • Le réseau cible

  • Les options de gestion (sauvegarde, surveillance, 24/7, réplication site distant)

Cliquer sur Suivant une fois les champs remplis.

A l'étape de personnalisation :

  • Saisir le mot de passe du compte administrateur qui sera fourni

  • Sélectionner les options de persistance requises

  • Activer ou non le chiffrement TLS

Puis cliquer sur Suivant.

Les mots de passe ne sont pas sauvegardés par cegedim.cloud.

Assurez-vous de sauvegarder votre mot de passe!

Réviser la synthèse avant de soumettre le formulaire.

Le provisionnement peut prendre jusqu'à 2 heures en fonction de la charge actuelle de l'automatisation.

Une fois le déploiement prêt, vous en serez informé par e-mail.

Comment se connecter à une instance autonome Redis ?

Ce code décrit comment se connecter sur Redis lorsque la topologie est une instance unique. Ce code est volontairement simplifié (les erreurs ne sont pas gérées), il est destiné à la démonstration uniquement.

Le langage Python est utilisé. Nous supposons que l'instance Redis est nommée pcluredis01.hosting.cegedim.cloud.

Exemple Python sans TLS
import redis
 
def main():
    try:
        myRedis = redis.Redis(host='redis01.hosting.cegedim.cloud', port=6379, db=0, password='1MyStrongPassword!', username='redis', decode_responses=True)
        pong = myRedis.ping()
        print(pong) # should be True
        myRedis.set('mykey','myvalue')
        print(myRedis.get('mykey')) # should be myvalue
        myRedis.close()
    except Exception as ex:
        print(ex)
 
if __name__ == "__main__":
    main()
Exemple Python avec TLS
import redis
 
def main():
    try:
        myRedis = redis.Redis(host='redis01.hosting.cegedim.cloud', port=6379, db=0, password='1MyStrongPassword!', username='redis', decode_responses=True)
        pong = myRedis.ping()
        print(pong) # should be True
        myRedis.set('mykey','myvalue')
        print(myRedis.get('mykey')) # should be myvalue
        myRedis.close()
    except Exception as ex:
        print(ex)
 
if __name__ == "__main__":
    main()

Comment se connecter à un cluster Redis ?

Ce code décrit comment se connecter sur Redis lorsque la topologie est Cluster (avec Sentinel). Il est volontairement simplifié (les erreurs ne sont pas gérées), il est destiné à la démonstration uniquement.

Le langage Python est utilisé.

Nous supposons que le cluster Redis est nommé redis-cluster avec un préfixe pclu. Il existe donc 3 machines :

  • pcluredis01.hosting.cegedim.cloud

  • pcluredis02.hosting.cegedim.cloud

  • pcluredis03.hosting.cegedim.cloud

Deux exemples sont proposés, avec et sans TLS.

Exemple Python sans TLS
from redis.sentinel import Sentinel
import redis
 
def main():
    try:
        mySentinel = Sentinel(
          [
            ('pcluredis01.hosting.cegedim.cloud', 26379),
            ('pcluredis02.hosting.cegedim.cloud', 26379),
            ('pcluredis03.hosting.cegedim.cloud', 26379)
          ],
          sentinel_kwargs={
            'username': 'redis',
            'password': '1MyStrongPassword!',
            'socket_connect_timeout': 0.5
          }
        )
         
        master_host, master_port = mySentinel.discover_master('redis-cluster')
        print("Redis master address: {}, TCP port {}".format(master_host, master_port))
        myMaster = redis.Redis(
          host=master_host,
          port=master_port,
          db=0,
          password='1MyStrongPassword!',
          username='redis',
          decode_responses=True
        )
        pong = myMaster.ping()
        print(pong) # should be True
        myMaster.set('mykey','myvalue')
        print(myMaster.get('mykey')) # should be myvalue
        myMaster.close()
        replicas = mySentinel.discover_slaves('redis-cluster')
        for replica in replicas:
            replica_host = replica[0]
            replica_port = replica[1]
            myReplica = redis.Redis(host=replica_host, port=replica_port, db=0, password='1MyStrongPassword!', username='redis', decode_responses=True)
            print("replica address {} port {} mykey {}".format(replica_host, replica_port, myReplica.get('mykey'))) # should be myvalue
            myReplica.close()
         
    except Exception as ex:
        print(ex)
 
if __name__ == "__main__":
    main()
Exemple Python avec TLS
from redis.sentinel import Sentinel
import redis
 
def main():
    try:
        mySentinel = Sentinel(
          [
            ('pcluredis01.hosting.cegedim.cloud', 26379),
            ('pcluredis02.hosting.cegedim.cloud', 26379),
            ('pcluredis03.hosting.cegedim.cloud', 26379)
          ],
          sentinel_kwargs={
            'username': 'redis',
            'password': '1MyStrongPassword!',
            'ssl': True,
            'ssl_ca_certs': '/tmp/ca-redis.crt',
            'ssl_cert_reqs': None,
            'ssl_certfile': None,
            'ssl_keyfile': None,
            'ssl_check_hostname': False,
            'socket_connect_timeout': 0.5
          }
        )
         
        master_host, master_port = mySentinel.discover_master('redis-cluster')
        print("Redis master address: {}, TCP port {}".format(master_host, master_port))
        myMaster = redis.Redis(
          host=master_host,
          port=master_port,
          db=0,
          password='1MyStrongPassword!',
          username='redis',
          decode_responses=True,
          ssl=True,
          ssl_ca_certs='/tmp/ca-redis.crt'
        )
        pong = myMaster.ping()
        print(pong) # should be True
        myMaster.set('mykey','myvalue')
        print(myMaster.get('mykey')) # should be myvalue
        myMaster.close()
        replicas = mySentinel.discover_slaves('redis-cluster')
        for replica in replicas:
            replica_host = replica[0]
            replica_port = replica[1]
            myReplica = redis.Redis(host=replica_host, port=replica_port, db=0, password='1MyStrongPassword!', username='redis', decode_responses=True, ssl=True, ssl_ca_certs='/tmp/ca-redis.crt')
            print("replica address {} port {} mykey {}".format(replica_host, replica_port, myReplica.get('mykey'))) # should be myvalue
            myReplica.close()
         
    except Exception as ex:
        print(ex)
 
if __name__ == "__main__":
    main()

Dernière mise à jour