Source: Redis

← Rendered

markdown source:

---
description: Брокер сообщений и система управления nosql БД
title: Redis
tags: queue data-bases bd
---
Резидентная система управления базами данных класса NoSQL с открытым исходным кодом, работающая со структурами данных типа «ключ — значение». Используется как для баз данных, так и для реализации кэшей и брокеров сообщений. Ориентирована на достижение максимальной производительности на атомарных операциях. [Статья в вики](https://ru.wikipedia.org/wiki/Redis)

Используется совместно с [[celery]]. Тут описано [как установить и конфигурировать](https://docs.celeryproject.org/en/stable/getting-started/backends-and-brokers/redis.html#broker-redis)

Можно из [[docker]]: `docker run -d -p 6379:6379 redis`

## [Установка и использование redis](https://redis.io/topics/quickstart)

Предлагаемый способ установки Redis — это компиляция из исходников, поскольку Redis не имеет никаких зависимостей, кроме работающего компилятора GCC и libc. Не рекомендуется устанавливать его с помощью менеджера пакетов вашего дистрибутива Linux, поскольку обычно доступная версия не является последней.

```shell
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
```

Далее доступно:

- redis-server сам сервер
- redis-sentinel исполняемый файл Redis Sentinel (мониторинг и аварийное переключение)
- redis-cli кли
- redis-benchmark проверка производительности

Старт сервера:

```shell
$ redis-server
[28550] 01 Aug 19:29:28 # Warning: no config file specified, using the default config. In order to specify a config file use 'redis-server /path/to/redis.conf'
[28550] 01 Aug 19:29:28 * Server started, Redis version 2.2.12
[28550] 01 Aug 19:29:28 * The server is now ready to accept connections on port 6379
... more logs ...
```

Проверка работоспособности

```shell
$ redis-cli ping
PONG
```

**Безопаснсость**. Редис торчит в сеть и чтобы обеспечить безопасность надо проверить следующее:

- Убедитесь, что порт, который Redis использует для прослушивания подключений (по умолчанию 6379 и дополнительно 16379, если вы запускаете Redis в кластерном режиме, плюс 26379 для Sentinel), защищен брандмауэром, чтобы невозможно было связаться с Redis из внешней сети
- Используйте файл конфигурации, в котором установлена директива bind, чтобы гарантировать, что Redis прослушивает только те сетевые интерфейсы, которые вы используете. Например, только интерфейс (127.0.0.1), если вы получаете доступ к Redis только локально с того же компьютера и так далее
- Используйте параметр requirepass, чтобы добавить дополнительный уровень безопасности, чтобы клиенты требовали аутентификации с помощью команды AUTH
- Используйте ПО для туннелирования SSL, чтобы зашифровать трафик между серверами Redis и клиентами Redis, если ваша среда требует шифрования.

Использование редиса в приложении требует [установки соответствующего коннектора](https://redis.io/clients) для языка приложения.

Смотри еще:

- [документация](https://redis.io/)
- [redis-py](https://github.com/redis/redis-py) Redis Python Client
- [redis-om-python](https://github.com/redis/redis-om-python) Object mapping, and more, for Redis and Python
- [redis](https://hub.docker.com/_/redis) docker
- [bitnami/redis](https://hub.docker.com/r/bitnami/redis/) docker
- [[celery]]
- [[python-rq]]
- [[rabbitmq]]
- [[apache-kafka]]
- [How to use Redis Pub/Sub in your Python Application](https://blog.devgenius.io/how-to-use-redis-pub-sub-in-your-python-application-b6d5e11fc8de)
- [How to create a redis cloud connection url with an auth password](https://stackoverflow.com/questions/44344628/how-to-create-a-redis-cloud-connection-url-with-an-auth-password)

[redis-py](https://github.com/redis/redis-py) - питоний интерфейс к редису


[celery]: celery "Celery"
[docker]: ../lists/docker "Docker"
[python-rq]: python-rq "Python-rq"
[rabbitmq]: rabbitmq "Rabbitmq"
[apache-kafka]: apache-kafka "Apache kafka"