---
title: 'Подключиться к кластеру Redis'
sidebar_label: 'Подключиться к кластеру'
sidebar_position: 6
description: 'Как подключиться к кластеру Redis с SSL-сертификатом или без SSL-сертификата в консоли и из разных языков программирования'
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import ConnectionAddresses from '@site/docs/_partials/managed-databases/common/connection-addresses.mdx'

# Подключиться к кластеру Redis

К кластеру Redis можно подключиться:

* [через Docker](#connect-via-docker);
* программный код [с SSL](#connect-with-ssl) и [без SSL](#connect-without-SSL).

Для всех способов доступно подключение с SSL-сертификатом.

При подключении укажите [порт](#connection-ports) и [адрес](#connection-addresses).

## Порты для подключения \{#connection-ports}

Для подключения к Redis используйте порты:

* 6380 — порт для подключения с SSL-сертификатом;
* 6379 — порт для подключения без SSL-сертификата (доступно только для кластеров в приватной подсети).

## Адреса для подключения \{#connection-addresses}

<ConnectionAddresses DatabaseName="Redis" slug="redis" />

## Подключиться с SSL \{#connect-with-ssl}

Подключение с использованием TLS(SSL)-шифрования обеспечивает безопасное соединение между вашим сервером и кластером баз данных.

<Tabs queryString="connect-with-ssl">
  <TabItem value="bash" default>
    <TabItemLabel>
      Bash
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.redis/`:

       ```bash
       mkdir -p ~/.redis/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.redis/root.crt
       chmod 600 ~/.redis/root.crt
       ```

    2. Подключитесь к кластеру:

       ```bash
       redis-cli -h <host> \
           -a <password> \
           -p <port> \
           --tls \
           --cacert ~/.redis/root.crt
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
       * `<password>` — пароль;
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="powershell">
    <TabItemLabel>
      PowerShell
    </TabItemLabel>

    1. В [панели управления](https://my.selectel.ru/vpc/default/dbaas/) нажмите **Скачать сертификат** для скачивания корневого сертификата и поместите его в папку `%APPDATA%\redis\`.
    2. Подключитесь к кластеру:

       ```bash
       redis-cli -h <host> `
       -a <password> `
       -p <port> `
       --tls `
       --cacert %APPDATA%\redis\CA.pem
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
       * `<password>` — пароль;
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="python">
    <TabItemLabel>
      Python
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.redis/`:

       ```bash
       mkdir -p ~/.redis/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.redis/root.crt
       chmod 600 ~/.redis/root.crt
       ```

    2. Установите библиотеку redis:

       ```bash
       pip install redis
       ```

    3. Используйте пример подключения:

       ```python
       import redis

       r = redis.Redis(
           host="<host>",
           password="<password>",
           port=<port>,
           db=0,
           ssl=True,
           ssl_ca_certs="<path>",
       )

       print(r.set("KEY", "VALUE"))
       print(r.get("KEY"))
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
       * `<password>` — пароль пользователя;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<path>` — полный путь до корневого сертификата.
  </TabItem>

  <TabItem value="php">
    <TabItemLabel>
      PHP
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.redis/`:

       ```bash
       mkdir -p ~/.redis/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.redis/root.crt
       chmod 600 ~/.redis/root.crt
       ```

    2. Установите через `Composer` библиотеку `predis`:

       ```bash
       composer require predis/predis
       ```

    3. Используйте пример подключения:

       ```php
       <?php
       require __DIR__ . '/vendor/autoload.php';
       Predis\Autoloader::register();

       $host = ['<host>:<port>'];
       $options = [
           'parameters' => [
               'scheme' => 'tls',
               'ssl' => ['cafile' => '<path>', 'verify_peer' => true],
               'password' => "<password>"
           ],
           'cluster' => 'predis'
       ];

       $conn = new Predis\Client($host, $options);

       $conn->set('KEY', 'VALUE');
       var_dump($conn->get('KEY'));

       $conn->disconnect();
       ?>
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<path>` — полный путь до корневого сертификата;
       * `<password>` — пароль пользователя.
  </TabItem>

  <TabItem value="go">
    <TabItemLabel>
      Go
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.redis/`:

       ```bash
       mkdir -p ~/.redis/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.redis/root.crt
       chmod 600 ~/.redis/root.crt
       ```

    2. Используйте пример подключения:

       ```go
       package main

       import (
           "context"
           "crypto/tls"
           "crypto/x509"
           "fmt"
           "io/ioutil"

           "github.com/go-redis/redis/v8"
       )

       var ctx = context.Background()
       var certPath = "<path>"

       func main() {
           caCert, err := ioutil.ReadFile(certPath)
           if err != nil {
               panic(err)
           }
           caCertPool := x509.NewCertPool()
           caCertPool.AppendCertsFromPEM(caCert)
           rdb := redis.NewClient(&redis.Options{
               Addr:     "<host>:<port>",
               Password: "<password>",
               DB:       0,
               TLSConfig: &tls.Config{
                   RootCAs:            caCertPool,
                   InsecureSkipVerify: true,
               },
           })

           err = rdb.Set(ctx, "key", "value", 0).Err()
           if err != nil {
               panic(err)
           }

           val, err := rdb.Get(ctx, "key").Result()
           if err != nil {
               panic(err)
           }
           fmt.Println("key", val)

       }
       ```

       Укажите:

       * `<path>` — полный путь до корневого сертификата;
       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<password>` — пароль пользователя.
  </TabItem>

  <TabItem value="nodejs">
    <TabItemLabel>
      Node.js
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.redis/`:

       ```bash
       mkdir -p ~/.redis/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.redis/root.crt
       chmod 600 ~/.redis/root.crt
       ```

    2. Установите клиент ioredis:

       ```bash
       npm install ioredis
       ```

    3. Используйте пример подключения:

       ```js
       const fs = require('fs');
       const Redis = require('ioredis');

       const config = {
         host: '<host>',
         port: <port>,
         password: '<password>',
         tls: {
           rejectUnauthorized: true,
           ca: fs.readFileSync('<path>').toString(),
         }
       };

       const connection = new Redis(config);

       connection.set('key', 'value', (error) => {
         if (error) throw error;
       });

       connection.get('key', (error, res) => {
         if (error) throw error;
         console.log(res);
         connection.disconnect();
       });
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<password>` — пароль пользователя;
       * `<path>` — полный путь до корневого сертификата.
  </TabItem>
</Tabs>

## Подключиться без SSL \{#connect-without-SSL}

Подключение без SSL доступно только для кластеров в приватной подсети.

<Tabs queryString="connect-without-ssl">
  <TabItem value="bash" default>
    <TabItemLabel>
      Bash
    </TabItemLabel>

    1. Откройте CLI.
    2. Подключитесь к кластеру:

       ```bash
       redis-cli -h <host> \
         -a <password> \
         -p <port>
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
       * `<password>` — пароль;
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="powershell">
    <TabItemLabel>
      PowerShell
    </TabItemLabel>

    1. Откройте CLI.
    2. Подключитесь к кластеру:

       ```bash
       redis-cli -h <host> `
       -a <password> `
       -p <port>
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
       * `<password>` — пароль;
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="python">
    <TabItemLabel>
      Python
    </TabItemLabel>

    1. Установите библиотеку redis:

       ```bash
       pip install redis
       ```

    2. Используйте пример подключения:

       ```python
       import redis

       r = redis.Redis(
           host="<host>",
           password=r"<password>",
           port=<port>,
           db=0,

       )

       print(r.set("KEY", "VALUE"))
       print(r.get("KEY"))
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
       * `<password>` — пароль пользователя;
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="php">
    <TabItemLabel>
      PHP
    </TabItemLabel>

    1. Установите через `Composer` библиотеку `predis`:

       ```bash
       composer require predis/predis
       ```

    2. Используйте пример подключения:

       ```php
       <?php
           require __DIR__ . '/vendor/autoload.php';
           Predis\Autoloader::register();

           $host = ['<host>:<port>'];
           $options = [
             'parameters' => [
               'password' => "<password>"
             ],
             'cluster' => 'predis'
           ];

           $conn = new Predis\Client($host, $options);

           $conn->set('KEY', 'VALUE');
           var_dump($conn->get('KEY'));

           $conn->disconnect();
       ?>
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<password>` — пароль пользователя.
  </TabItem>

  <TabItem value="go">
    <TabItemLabel>
      Go
    </TabItemLabel>

    Используйте пример подключения:

    ```go
    package main

    import (
        "context"
        "fmt"

        "github.com/go-redis/redis/v8"
    )

    func main() {
        var ctx = context.Background()

        rdb := redis.NewClient(&redis.Options{
            Addr:     "<host>:<port>",
            Password: "<password>",
            DB:       0,
        })

        err := rdb.Set(ctx, "key", "value", 0).Err()
        if err != nil {
            panic(err)
        }

        val, err := rdb.Get(ctx, "key").Result()
        if err != nil {
            panic(err)
        }
        fmt.Println("key", val)

    }
    ```

    Укажите:

    * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
    * `<port>` — [порт для подключения](#connection-ports);
    * `<password>` — пароль пользователя.
  </TabItem>

  <TabItem value="nodejs">
    <TabItemLabel>
      Node.js
    </TabItemLabel>

    1. Установите клиент ioredis:

       ```bash
       npm install ioredis
       ```

    2. Используйте пример подключения:

       ```js
       const Redis = require('ioredis');

       const config = {
         host: '<host>',
         port: <port>,
         password: '<password>',
       };

       const connection = new Redis(config);

       connection.set('key', 'value', (error) => {
         if (error) throw error;
       });

       connection.get('key', (error, res) => {
         if (error) throw error;
         console.log(res);
         connection.disconnect();
       });
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<password>` — пароль пользователя.
  </TabItem>
</Tabs>

## Подключиться через Docker \{#connect-via-docker}

1. Скачайте корневой сертификат и поместите его в папку `~/.redis/`:

   ```bash
   mkdir -p ~/.redis/
   wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.redis/root.crt
   chmod 600 ~/.redis/root.crt
   ```

2. Подключитесь к кластеру:

   ```bash
   docker run --rm -it \
     -v $(pwd)/.redis/root.crt:/root.crt \
     redis \
     redis-cli \
     -h <host> \
     -a <password> \
     -p <port> --tls \
     --cacert /root.crt
   ```

   Укажите:

   * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/redis/public-ip.mdx) (Floating IP) ноды;
   * `<password>` — пароль пользователя;
   * `<port>` — [порт для подключения](#connection-ports).

<Formbricks />
