Архив метки: Redis

Запрос Redis из Python

request python redis

Remote Dictionary Server, или для краткости Redis, — это бесплатная база данных в оперативной памяти с открытым исходным кодом. Redis — это однопоточная база данных NoSQL, созданная для обеспечения высокой производительности и малой задержки между чтением и записью данных. Он использует пары ключ-значение для хранения данных.

Хотя данные хранятся в системной памяти, вы можете добавить постоянство, выгружая сохраненные данные на диск и загружая их при необходимости.

В этой статье мы познакомим вас с ключевыми концепциями Redis и покажем, как использовать Redis с языком программирования Python. Читать →

Как установить и настроить Redis на Linux шаг за шагом с полным руководством

В этом разделе вы познакомитесь с процессом установки и конфигурации системы кэширования на платформе Linux. Система, о которой идет речь, является важным инструментом для эффективного управления данными и обеспечения быстрой работы сетевых приложений. Основная цель данного руководства – предоставить вам полное понимание всех необходимых шагов и настроек, чтобы система работала стабильно и безопасно. Читать →

Установка Redis в Ubuntu

Redis – это высокопроизводительная база данных, которая хранит все данные в памяти. Может использоваться как сервер баз данных, кэш, сервер очередей и хранилище сообщений. Программа написана на языке программирования Си и имеет библиотеки для использования в разных языках программирования, в том числе и для PHP.

В этой статье мы разберем как выполняется установка Redis Ubuntu 18.04, как пользоваться программой, а также как подключить и использовать библиотеку для PHP. Читать →

Как установить Redis на Debian

Redis — это популярное хранилище значений ключей с обширными функциями, включая сегментирование, кластеризацию, графики, временные ряды и многое другое, что сделало его очень популярным среди разработчиков. Он имеет множество функций, необходимых для создания веб-приложения и его масштабирования. В этой статье мы покажем, как установить Redis в Debian Linux версии 11. И так приступим.

Читать →

Распределенная блокировка Redis

В Redis под секционированием понимается разделение данных на несколько экземпляров. Это означает, что каждый Redis содержит часть всего вашего набора данных. Это удобная функция, особенно при работе с большими наборами данных.

Давайте рассмотрим различные типы секционирования в Redis, а также стоимость и преимущества каждого из них.

 

Типы разделов Redis

В Redis есть два механизма разделения:

  1. Разделение диапазона
  2. Разбиение хэша

 

Разделение по рангу

Лучший способ объяснить разделение — использовать аналогию. Предположим, у вас есть четыре экземпляра Redis: R0, R1, R2 и R3. Кроме того, предположим, что вам нужно хранить ключи в формате user:[id].

Вы можете использовать разбиение по диапазонам, чтобы разделить данные на доступные экземпляры Redis.

При разбиении по диапазонам вы сопоставляете раздел своих данных с конкретным экземпляром. Например, вы можете взять ключи от пользователя: [id<0> – id<1000>] и сопоставить их с экземпляром R0. Экземпляр r1 может содержать подмножество ключей пользователя [id<1001> – id<2000>] и так далее.

Это самая простая и наиболее применимая форма разбиения в Redis. Тем не менее, это дает ограничение.

Для секционирования диапазона требуется таблица, которая сопоставляет определенный диапазон с соответствующим ему кластером.

Таблица сопоставления требует управления и применения для каждого секционированного типа данных.

 

Разбиение хэша

Второй альтернативой разбиению по диапазону является разбиение по хешу. Redis использует функцию хеширования для преобразования ключа в число в этом методе разделения.

Например, если у нас есть ключ «fact», мы можем преобразовать его в число, используя функцию хэширования, такую ​​как CRC-16.

Это должно вернуть число как fact.

Затем Redis применяет к числу операцию по модулю и возвращает результат от 0 до 3.

Например:

8167 % 2

 

Приведенная выше операция должна вернуть 1. Затем Redis использует это значение, чтобы определить, в каком кластере должен храниться ключ. В нашем примере ключ «fact» хранится в экземпляре R1.

Примечание
В Redis операция хеширования выполняется иначе. Выше приведена просто аналогия.

 

Преимущества разделения.

  1. Разделение позволяет нескольким экземплярам совместно использовать память и хранить данные.
  2. Разрешить масштабирование вычислительной мощности.

 

 Недостатки разделения

  1. Многоклавишная операция не поддерживается.
  2. Вы не можете выполнить транзакцию Redis, используя несколько ключей.
  3. Вносит двусмысленность при работе с настойчивостью.
  4. Сокращение или увеличение данных оказывается трудным.

 

Заключение

В этой статье вы узнали о различных механизмах разделения Redis. Ознакомьтесь с документацией, чтобы узнать больше.



2022-04-06T16:26:31
Redis

LUA-скрипты Redis

Redis — это бесплатная размещаемая в памяти база данных с открытым исходным кодом, широко используемая в качестве механизма кэширования или брокера сообщений.

Хотя по умолчанию он очень универсален и обширен, он позволяет расширять функциональные возможности с помощью встроенного интерпретатора Lua. Это означает, что вы можете писать сценарии на Lua для выполнения дополнительных операций с вашей базой данных Redis.

 

Требования

Чтобы лучше следовать этой статьи, мы рекомендуем установить в вашей системе последнюю версию сервера Redis.

Базовые знания Redis полезны для понимания команд, показанных в этой статье.

 

Команда Redis EVAL

Чтобы запускать команды Lua в Redis, вам нужно использовать команду EVAL. Команда указывает Redis выполнять код как сценарий Lua на стороне сервера.

Пример показан ниже:

127.0.0.1:6379> EVAL "redis.call('SET', KEYS[1], ARGV[1])" 1 key value

 

В приведенном выше примере мы начинаем с команды EVAL, за которой следует сценарий Lua. Скрипт использует функцию redis.call. Затем мы передаем команду для запуска, ключ и значение в качестве аргументов. Это похоже на запуск значений ключа SET.

Обратите внимание, что KEYS и ARGV обозначают аргументы скрипта. В этом случае мы указываем количество ключей как 1.

Разбор аргументов выполняется через ARGV, который содержит таблицу аргументов. В нашем случае мы передаем значение ключа.

Затем мы можем получить доступ к ключам, начиная с индекса 1.

Примечание
Рекомендуется указывать все ключи, используемые в сценарии, в разделе KEYS, а все остальные аргументы — в разделе ARGV.

 

Мы можем получить значение ключа с помощью команды get:

127.0.0.1:6379> EVAL "redis.call('GET', KEYS[1])" 1 key

 

Это должно вернуть значение указанного ключа.

 

Команда Redis EVALSHA

Redis также предоставляет вам команду EVALSHA для вызова команды на основе ее хеш-значения.

Это устраняет необходимость перепечатывать сценарий каждый раз, когда он вам нужен.

Пример:

SCRIPT LOAD "return redis.call('get', KEYS[1])"

 

Приведенная выше команда должна возвращать значение SHA как:

"4e6d8fc8bb01276962cce5371fa795a7763657ae"

 

Затем вы можете использовать это значение sha для вызова команды.

127.0.0.1:6379> EVALSHA 4e6d8fc8bb01276962cce5371fa795a7763657ae 1 key

"value"

 

Чтобы удалить все загруженные скрипты, выполните команду:

127.0.0.1:6379> SCRIPT FLUSH

OK

 

Приведенная выше команда должна очистить кеш скрипта.

 

Заключение

В этой статье описываются самые основные команды, которые можно использовать при работе со сценариями LUA в Redis. Ознакомьтесь с документацией по Lua, чтобы узнать больше.



2022-04-04T17:52:20
Redis