Подключиться к кластеру Redis
К кластеру облачных баз данных Redis можно подключиться по DNS-адресу, приватному IP-адресу и публичному IP-адресу.
Мы рекомендуем подключаться по DNS-адресу, потому что DNS-адреса соответствуют ролям нод и ведут на актуальные IP-адреса мастера и реплик. IP-адреса соответствуют конкретным нодам. В случае недоступности мастера одна из реплик возьмет на себя его роль, IP-адрес мастера изменится, и подключение по IP перестанет работать.
Если кластер подключен к приватной подсети и вы хотите работать с ним через DNS, подключите подсеть кластера к облачному роутеру с доступом к внешней сети. Используйте инструкцию Настроить доступ в интернет через облачный роутер.
Если кластер подключен к приватной сети и вам нужно настроить доступ к ноде из интернета, подключите публичный IP-адрес.
Порты
Для подключения к Redis используйте порты:
- 6380 — порт для подключения с SSL-сертификатом;
- 6379 — порт для подключения без SSL-сертификата (доступно только для кластеров в приватной подсети).
Способы подключения
- через Docker;
- из программного кода с SSL и без SSL.
Для всех способов доступно подключение с SSL-сертификатом.
Посмотреть адрес для подключения
- В панели управления перейдите в раздел Облачная платформа → Базы данных.
- Откройте страницу кластера баз данных → вкладка Подключение.
- В блоке Адреса для подключения посмотрите адрес.
Подключиться с SSL
Подключение с использованием TLS/SSL шифрования обеспечивает безопасное соединение между вашим сервером и кластером баз данных.
Bash
Python
PHP
Go
Node.js
-
Скачайте корневой сертификат и поместите его в папку
~/.redis/
:mkdir -p ~/.redis/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.redis/root.crt
chmod 600 ~/.redis/root.crt -
Подключитесь к кластеру:
redis-cli -h <host> \
-a <password> \
-p 6380 \
--tls \
--cacert ~/.redis/root.crtУкажите:
<host>
— DNS-адрес ноды;<password>
— пароль.
-
Скачайте корневой сертификат и поместите его в папку
~/.redis/
:mkdir -p ~/.redis/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.redis/root.crt
chmod 600 ~/.redis/root.crt -
Установите библиотеку redis:
pip install redis
-
Используйте пример подключения:
import redis
r = redis.Redis(
host="<host>",
password="<password>",
port=6380,
db=0,
ssl=True,
ssl_ca_certs="<full_path_to_root_certificate>",
)
print(r.set("KEY", "VALUE"))
print(r.get("KEY"))Укажите:
<host>
— DNS-адрес ноды;<password>
— пароль пользователя;<full_path_to_root_certificate>
— полный путь до корневого сертификата.
-
Скачайте корневой сертификат и поместите его в папку
~/.redis/
:mkdir -p ~/.redis/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.redis/root.crt
chmod 600 ~/.redis/root.crt -
Установите через composer библиотеку predis:
composer require predis/predis
-
Используйте пример подключения:
<?php
require __DIR__ . '/vendor/autoload.php';
Predis\Autoloader::register();
$host = ['<host>:6380'];
$options = [
'parameters' => [
'scheme' => 'tls',
'ssl' => ['cafile' => '<full_path_to_root_certificate>', '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-адрес ноды;<full_path_to_root_certificate>
— полный путь до корневого сертификата;<password>
— пароль пользователя.
-
Скачайте корневой сертификат и поместите его в папку
~/.redis/
:mkdir -p ~/.redis/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.redis/root.crt
chmod 600 ~/.redis/root.crt -
Используйте пример подключения:
package main
import (
"context"
"crypto/tls"
"crypto/x509"
"fmt"
"io/ioutil"
"github.com/go-redis/redis/v8"
)
var ctx = context.Background()
var certPath = "<full_path_to_root_certificate>"
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>:6380",
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)
}Укажите:
<full_path_to_root_certificate>
— полный путь до корневого сертификата;<host>
— DNS-адрес ноды;<password>
— пароль пользователя.
-
Скачайте корневой сертификат и поместите его в папку
~/.redis/
:mkdir -p ~/.redis/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.redis/root.crt
chmod 600 ~/.redis/root.crt -
Установите клиент ioredis:
npm install ioredis
-
Используйте пример подключения:
const fs = require('fs');
const Redis = require('ioredis');
const config = {
host: '<host>',
port: 6380,
password: '<password>',
tls: {
rejectUnauthorized: true,
ca: fs.readFileSync('<full_path_to_root_certificate>').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-адрес ноды;<password>
— пароль пользователя;<full_path_to_root_certificate>
— полный путь до корневого сертификата.
Подключиться без SSL
Подключение без SSL доступно только для кластеров в приватной подсети.
Bash
Python
PHP
Go
Node.js
-
Откройте CLI.
-
Подключитесь к кластеру:
redis-cli -h <host> \
-a <password> \
-p 6379Укажите:
<host>
— DNS-адрес ноды;<password>
— пароль.
-
Установите библиотеку redis:
pip install redis
-
Используйте пример подключения:
import redis
r = redis.Redis(
host="<host>",
password=r"<password>",
port=6379,
db=0,
)
print(r.set("KEY", "VALUE"))
print(r.get("KEY"))Укажите:
<host>
— DNS-адрес ноды;<password>
— пароль пользователя.
-
Установите через composer библиотеку predis:
composer require predis/predis
-
Используйте пример подключения:
<?php
require __DIR__ . '/vendor/autoload.php';
Predis\Autoloader::register();
$host = ['<host>:6379'];
$options = [
'parameters' => [
'password' => "<password>"
],
'cluster' => 'predis'
];
$conn = new Predis\Client($host, $options);
$conn->set('KEY', 'VALUE');
var_dump($conn->get('KEY'));
$conn->disconnect();
?>Укажите
<password>
— пароль пользователя.
Используйте пример подключения:
package main
import (
"context"
"fmt"
"github.com/go-redis/redis/v8"
)
func main() {
var ctx = context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "<host>:6379",
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)
}
Укажите <password>
— пароль пользователя.
-
Установите клиент ioredis:
npm install ioredis
-
Используйте пример подключения:
const Redis = require('ioredis');
const config = {
host: '<host>',
port: 6379,
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-адрес ноды;<password>
— пароль пользователя.
Подключиться из Docker
-
Скачайте корневой сертификат и поместите его в папку
~/.redis/
:mkdir -p ~/.redis/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.redis/root.crt
chmod 600 ~/.redis/root.crt -
Подключитесь к кластеру:
docker run --rm -it \
-v $(pwd)/.redis/root.crt:/root.crt \
redis \
redis-cli \
-h <host> \
-a <password> \
-p 6380 --tls \
--cacert /root.crtУкажите:
<host>
— DNS-адрес ноды;<password>
— пароль пользователя.