1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-redis

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

codecov

Этот README является быстрым кратким руководством для быстрого старта. Более подробная документация доступна на redis.io.

Что такое Redis?

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

  • Кэша, поддерживающего несколько политик вытеснения ключей, истечение срока действия ключей и полей хэшей

  • Распределенного хранилища сессий, поддерживающего несколько вариантов моделирования данных сессий (строка, JSON, хэш).

  • Сервера структур данных: низкоуровневые структуры данных (строка, JSON, список, хэш, множество, упорядоченное множество, битовая карта, битовое поле и другие — см. полный список ниже) с высокоуровневыми семантиками (счетчик, стек, очередь, приоритетная очередь, ограничитель скорости, рейтинг, ...) и поддержкой транзакций и скриптов.

  • NoSQL хранилища данных: ключ-значение, документы, временные ряды.

  • Вторичного индекса и движка поиска и запросов: с помощью Redis Query Engine пользователи могут определять индексы для хэш- и JSON-документов и использовать богатый язык запросов для векторного поиска, полнотекстового поиска, геопространственных запросов, ранжирования и агрегации.

  • Распределенного хранилища событий, платформы для обработки потоков и брокера сообщений: очередь (список), приоритетная очередь (упорядоченное множество), дедупликация событий (множество), потоки и публикация/подписка, с возможностями вероятностной обработки потоков.- Хранилища векторов, интегрированного с приложениями и экосистемами генеративного ИИ (например, LangGraph, mem0), предоставляющего краткосрочную память (чекпоинтеры), долгосрочную память (хранилище), кэширование ответов LLM (семантический кэш LLM) и извлечение контекста (приложения RAG).

  • Реал-тайм аналитика, включая персонализацию, рекомендации, обнаружение мошенничества и аномалий, оценку рисков.Redis можно доверять (он надежен и имеет четко определенное поведение), он поставляется с долгосрочным обязательством (мы продолжаем поддерживать Redis, избегаем введения разрывных изменений и поддерживаем его инновационность и конкурентоспособность). Redis быстр и имеет небольшой объем использования памяти (с правильными компромиссами), легко понимается, изучается и используется, и легко внедряется в широкий спектр сред разработки и языков программирования. Если вы хотите узнать больше, вот список отправных точек:

  • Введение в типы данных Redis - https://redis.io/docs/latest/develop/data-types/

  • Полный список команд Redis - https://redis.io/commands

  • Redis для AI - https://redis.io/docs/latest/develop/ai/

  • и многое другое - https://redis.io/documentation

Что такое Redis Open Source?

Redis Community Edition (Redis CE) был переименован в Redis Open Source с выпуском версии v8.0.

Redis Ltd. также предлагает Redis Software, самоуправляемое программное обеспечение с дополнительными возможностями соответствия, надежности и устойчивости для масштабирования в корпоративной среде, и Redis Cloud, полностью управляемую службу, интегрированную с Google Cloud, Azure и AWS для приложений, готовых к производственному использованию.

Читайте больше о различиях между Redis Open Source и Redis здесь.

Redis Open Source - бинарные дистрибутивыСамый быстрый способ развернуть Redis — использовать один из бинарных дистрибутивов:

Если вы предпочитаете собирать Redis из исходного кода — см. инструкции ниже.

Использование Redis с redis-cli

redis-cli — это командная строка Redis. Она доступна в составе всех бинарных дистрибутивов и при сборке Redis из исходного кода.

См. https://redis.io/docs/latest/develop/tools/cli/

Вы можете запустить экземпляр redis-server, а затем, в другом терминале, попробуйте следующее:

% cd src
% ./redis-cli
redis> ping
PONG
redis> set foo bar
OK
redis> get foo
"bar"
redis> incr mycounter
(integer) 1
redis> incr mycounter
(integer) 2
redis>

Использование Redis с Redis Insight

Для более визуального и удобного пользовательского опыта используйте Redis Insight — инструмент, который позволяет вам исследовать данные, проектировать, разрабатывать и оптимизировать ваши приложения, а также служит платформой для обучения и адаптации в Redis. Redis Insight интегрирует Redis Copilot, помощника на естественном языке, который улучшает опыт работы с данными и командами. См. https://redis.io/docs/latest/develop/tools/insight/ и https://github.com/RedisInsight/RedisInsight.

Использование Redis с библиотеками клиентовДля подключения вашего приложения к Redis вам потребуется библиотека клиентов. Список библиотек клиентов доступен по адресу: https://redis.io/docs/latest/develop/clients/.

Типы данных Redis, процессоры и возможности

Redis предоставляет различные типы данных, процессоры и возможности для поддержки широкого спектра сценариев использования:

  1. Строка

    • Строки хранят последовательности байтов, включая текст, сериализованные объекты и бинарные массивы. Таким образом, строки являются простейшим типом значения, который можно связать с ключом Redis.
    • Документация: Строки
  2. JSON (*)

    • Тип данных JSON предоставляет поддержку JavaScript Object Notation (JSON) для Redis. Он позволяет хранить, извлекать и обновлять JSON-документы. JSON-документ можно запросить и изменять с использованием выражений JSONPath. JSON также работает без проблем с Redis Query Engine, что позволяет индексировать и запрашивать JSON-документы.
    • Документация: Быстрый старт JSON
  3. Хэш

    • Хэш — это коллекция полей, каждое поле является парой имя-значение. Вы можете использовать хэши для представления плоских объектов и для хранения групп счетчиков, среди прочего. Для каждого поля хэша можно установить время истечения или время жизни.
    • Документация: Хэши1. Redis Query Engine (*)
    • Redis Query Engine позволяет использовать Redis как документную базу данных, векторную базу данных, вторичный индекс и поисковую систему. С помощью Redis Query Engine пользователи могут определять индексы для хэш- и JSON-документов и использовать богатый язык запросов для векторного поиска, полнотекстового поиска, геопространственных запросов и агрегаций.
    • Документация: Redis Query Engine1. Список
    • Список — это список строк, отсортированный по порядку вставки. Они отлично подходят для стеков, очередей и для управления очередями и рабочими системами.
    • Документация: Списки
  4. Множество

    • Множество — это неупорядоченная коллекция уникальных строк (элементов). Множества можно использовать для отслеживания уникальных элементов (например, отслеживать все уникальные IP-адреса, доступ к определенному блогу), представлять отношения (например, множество всех пользователей с определенной ролью). Redis также поддерживает общие операции над множествами, такие как пересечение, объединение и разность.
    • Документация: Множества
  5. Отсортированное множество

    • Отсортированное множество похоже на обычное множество, но каждый элемент связан с оценкой. Когда у нескольких элементов одинаковая оценка, они упорядочиваются лексикографически. Некоторые сценарии использования отсортированных множеств включают рейтинговые таблицы и ограничители скорости с использованием скользящего окна.
    • Документация: Отсортированные множества1. Векторное множество (бета)
    • Векторное множество — это тип данных, похожий на отсортированное множество, но вместо оценки каждый элемент связан с векторным представлением. Вы можете добавлять элементы в векторное множество, а затем извлекать элементы, наиболее похожие на заданное векторное представление или на векторное представление существующего элемента.
    • Документация: Векторные множества
  6. Геопространственный индекс

    • Геопространственные индексы позволяют хранить координаты и искать их. Эта структура данных полезна для поиска ближайших точек в пределах заданного радиуса или ограничивающей рамки.
    • Документация: Geo
  7. Битовая карта

    • Битовые карты предоставляют битовые операции на битовом векторе. Вы можете получать биты, устанавливать биты и выполнять битовые операции между битовыми картами. Битовые карты часто используются для эффективного управления членством или разрешениями, где каждый бит представляет определенного члена.
    • Документация: Битовая карта1. Битовое поле
    • Битовые поля позволяют устанавливать, увеличивать и получать целочисленные значения произвольной битовой длины — от беззнаковых 1-битных целых чисел до знаковых 63-битных целых чисел. Битовые поля часто используются для эффективного управления массивами счетчиков с ограниченным диапазоном или числовых значений.
    • Документация: Битовое поле1. HyperLogLog
    • HyperLogLog — это вероятностная структура данных, используемая для приближенного подсчета количества уникальных элементов в потоке.
    • Документация: HyperLogLog
  8. Bloom filter (*)

    • Bloom filter — это вероятностная структура данных, используемая для проверки, присутствует ли заданное значение в потоке.
    • Документация: Bloom filter
  9. Фильтр Cuckoo (*)

    • Фильтр Cuckoo, как и фильтр Bloom, является вероятностной структурой данных для проверки, присутствует ли заданное значение в потоке данных, а также позволяет ограниченное подсчет и удаление.
    • Документация: Фильтр Cuckoo
  10. Top-k (*)

    • Top-k — это вероятностная структура данных, используемая для отслеживания наиболее частых значений в потоке данных.
    • Документация: Top-k
  11. Count-Min Sketch (*)

    • Count-Min Sketch — это вероятностная структура данных, используемая для оценки количества появлений заданного значения в потоке данных.
    • Документация: Count-Min Sketch1. t-digest (*)
    • t-digest — это вероятностная структура данных, используемая для оценки доли / количества значений в потоке данных, которые меньше заданного значения, какое значение меньше p процентов значений в потоке данных, или какие значения являются наименьшими/наибольшими в потоке данных.
    • Документация: t-digest1. Временные ряды (*)
    • временные ряды позволяют хранить и запрашивать данные с метками времени (образцы).
    • Документация: Временные ряды: быстрый старт
  12. Pub/Sub

    • Pub/Sub (сокращение от publish/subscribe) — это легковесная функция обмена сообщениями. Публикаторы отправляют сообщения в канал, а подписчики получают сообщения из этого канала.
    • Документация: Redis streams
  13. Поток

    • Поток — это структура данных, действующая как журнал с добавлением в конец. Каждая запись в потоке состоит из пар имя-значение, аналогичных хэшу. Потоки поддерживают несколько стратегий потребления, где потребители могут извлекать записи, потреблять записи по диапазону или слушать записи. Группы потребителей позволяют нескольким рабочим процессам извлекать разные записи из потока для масштабирования обработки сообщений.
    • Документация: Redis streams
  14. Транзакции

    • Транзакция позволяет выполнить группу команд за один шаг. Запрос, отправленный другим клиентом, никогда не будет обработан посредине выполнения транзакции. Это гарантирует, что команды выполняются как единая изолированная операция.
    • Документация: Транзакции1. Программируемость
    • Пользователи могут загружать и выполнять Lua-скрипты на сервере. Скрипты могут использовать программные структуры управления и выполнять большинство команд для доступа к базе данных. Поскольку скрипты выполняются на сервере, чтение и запись данных из скриптов очень эффективны. Функции предоставляют ту же основную функциональность, что и скрипты, но являются первоклассными программными артефактами базы данных. Redis управляет функциями как интегральной частью базы данных и обеспечивает их доступность через сохранение данных и репликацию.
    • Документация: Программирование с Lua
    • Документация: Функции

Элементы, отмеченные (*), требуют сборки с BUILD_WITH_MODULES=yes.

Сборка и запуск Redis со всеми структурами данных - Ubuntu 20.04 (Focal)

Тестировано с следующими Docker-образами:

  • ubuntu:20.04
  1. Установка необходимых зависимостей

    Обновите списки пакетов и установите необходимые инструменты и библиотеки разработки:

    apt-get update
    apt-get install -y sudo
    sudo apt-get install -y --no-install-recommends ca-certificates wget dpkg-dev gcc g++ libc6-dev libssl-dev make git python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf gcc-10 g++-10 libtool
  2. Использование GCC 10 в качестве основного компилятора

    Обновите основной компилятор системы до GCC 10:``` sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10


3. Установка CMake

   Установите CMake с помощью `pip3` и создайте символическую ссылку для доступа к нему по всей системе:

pip3 install cmake==3.31.6 sudo ln -sf /usr/local/bin/cmake /usr/bin/cmake cmake --version


Примечание: Версия CMake 3.31.6 является последней поддерживаемой версией. Более новые версии не могут быть использованы.

4. Скачайте исходный код Redis

Скачайте архив с исходным кодом определенной версии Redis с GitHub.

Замените `<version>` на версию Redis, например: `8.0.0`.

cd /usr/src wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz


5. Распакуйте архив с исходным кодом

Создайте директорию для исходного кода и распакуйте содержимое в нее:

cd /usr/src tar xvf redis-.tar.gz rm redis-.tar.gz


6. Соберите Redis

Установите необходимые переменные окружения и скомпилируйте Redis:

cd /usr/src/redis- export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes make -j "$(nproc)" all


7. Запустите Redis

cd /usr/src/redis- ./src/redis-server redis-full.conf


### Сборка и запуск Redis со всеми структурами данных - Ubuntu 22.04 (Jammy) / 24.04 (Noble)

Тестировано с использованием следующего Docker-образа:
- ubuntu:22.04
- ubuntu:24.04

1. Установите необходимые зависимости

Обновите списки пакетов и установите необходимые инструменты и библиотеки для разработки:

apt-get update apt-get install -y sudo sudo apt-get install -y --no-install-recommends ca-certificates wget dpkg-dev gcc g++ libc6-dev libssl-dev make git cmake python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf libtool


2. Скачивание исходного кода Redis

   Скачайте архив с исходным кодом определенной версии Redis с GitHub.

   Замените `<version>` на версию Redis, например: `8.0.0`.

cd /usr/src wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz


3. Распаковка архива с исходным кодом

Создайте директорию для исходного кода и распакуйте содержимое в нее:

cd /usr/src tar xvf redis-.tar.gz rm redis-.tar.gz


4. Сборка Redis

Установите необходимые переменные окружения и соберите Redis:

cd /usr/src/redis- export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes make -j "$(nproc)" all


5. Запуск Redis

cd /usr/src/redis- ./src/redis-server redis-full.conf


Тестировано с следующими Docker-образами:
- debian:bullseye
- debian:bullseye-slim
- debian:bookworm
- debian:bookworm-slim

1. Установка необходимых зависимостей

Обновите списки пакетов и установите необходимые инструменты и библиотеки разработки:

apt-get update apt-get install -y sudo sudo apt-get install -y --no-install-recommends ca-certificates wget dpkg-dev gcc g++ libc6-dev libssl-dev make git cmake python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf libtool


2. Скачивание исходного кода Redis

Скачайте архив с исходным кодом определенной версии Redis с GitHub.   Замените `<version>` на версию Redis, например: `8.0.0`.

cd /usr/src wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz


3. Распаковка архива с исходным кодом

Создайте директорию для исходного кода и распакуйте содержимое в нее:

cd /usr/src tar xvf redis-.tar.gz rm redis-.tar.gz


4. Сборка Redis

Установите необходимые переменные окружения и соберите Redis:

cd /usr/src/redis- export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes make -j "$(nproc)" all


5. Запуск Redis

cd /usr/src/redis- ./src/redis-server redis-full.conf


### Сборка и запуск Redis со всеми структурами данных - AlmaLinux 8.10 / Rocky Linux 8.10

Тестировано с следующими Docker-образами:
- almalinux:8.10
- almalinux:8.10-minimal
- rockylinux/rockylinux:8.10
- rockylinux/rockylinux:8.10-minimal

1. Подготовка системы

Для 8.10-minimal, установите `sudo` и `dnf` следующим образом:

microdnf install dnf sudo -y


Для 8.10 (обычный), установите `sudo` следующим образом:

dnf install sudo -y


Очистите метаданные пакетов, включите необходимые репозитории и установите инструменты разработки:

sudo dnf clean all sudo tee /etc/yum.repos.d/goreleaser.repo > /dev/null <<EOF [goreleaser] name=GoReleaser baseurl=https://repo.goreleaser.com/yum/ enabled=1 gpgcheck=0 EOF sudo dnf update -y sudo dnf groupinstall "Development Tools" -y sudo dnf config-manager --set-enabled powertools sudo dnf install -y epel-release


2. Установка необходимых зависимостей

Обновите списки пакетов и установите необходимые инструменты и библиотеки разработки:   ```
sudo dnf install -y --nobest --skip-broken pkg-config wget gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ git make openssl openssl-devel python3.11 python3.11-pip python3.11-devel unzip rsync clang curl libtool automake autoconf jq systemd-devel

Создайте виртуальное окружение Python:

python3.11 -m venv /opt/venv

Активируйте набор инструментов GCC:

sudo cp /opt/rh/gcc-toolset-13/enable /etc/profile.d/gcc-toolset-13.sh
echo "source /etc/profile.d/gcc-toolset-13.sh" | sudo tee -a /etc/bashrc
  1. Установка CMake

    Установите CMake 3.25.1 вручную:

    CMAKE_VERSION=3.25.1
    ARCH=$(uname -m)
    if [ "$ARCH" = "x86_64" ]; then
      CMAKE_FILE=cmake-${CMAKE_VERSION}-linux-x86_64.sh
    else
      CMAKE_FILE=cmake-${CMAKE_VERSION}-linux-aarch64.sh
    fi
    wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_FILE}
    chmod +x ${CMAKE_FILE}
    ./${CMAKE_FILE} --skip-license --prefix=/usr/local --exclude-subdir
    rm ${CMAKE_FILE}
    cmake --version
  2. Скачивание исходного кода Redis

    Скачайте архив с исходным кодом определенной версии Redis с GitHub.

    Замените <version> на версию Redis, например: 8.0.0.

    cd /usr/src
    wget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz
  3. Распаковка архива с исходным кодом

    Создайте директорию для исходного кода и распакуйте содержимое в нее:

    cd /usr/src
    tar xvf redis-<version>.tar.gz
    rm redis-<version>.tar.gz
  4. Сборка Redis

    Активируйте набор инструментов GCC, установите необходимые переменные окружения и соберите Redis:

    source /etc/profile.d/gcc-toolset-13.sh
    cd /usr/src/redis-<version>
    export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
    make -j "$(nproc)" all
  5. Запуск Redis ``` cd /usr/src/redis- ./src/redis-server redis-full.conf

Сборка и запуск Redis со всеми структурами данных - AlmaLinux 9.5 / Rocky Linux 9.5

Тестировано с следующими Docker-образами:

  • almalinux:9.5
  • almalinux:9.5-minimal
  • rockylinux/rockylinux:9.5
  • rockylinux/rockylinux:9.5-minimal
  1. Подготовка системы

    Для 9.5-minimal установите sudo и dnf следующим образом:

    microdnf install dnf sudo -y

    Для 9.5 (обычной) установите sudo следующим образом:

    dnf install sudo -y

    Очистите метаданные пакетов, включите необходимые репозитории и установите инструменты разработки:

    sudo tee /etc/yum.repos.d/goreleaser.repo > /dev/null <<EOF
    [goreleaser]
    name=GoReleaser
    baseurl=https://repo.goreleaser.com/yum/
    enabled=1
    gpgcheck=0
    EOF
    sudo dnf clean all
    sudo dnf makecache
    sudo dnf update -y
  2. Установка необходимых зависимостей

    Обновите списки пакетов и установите необходимые инструменты и библиотеки разработки:

    sudo dnf install -y --nobest --skip-broken pkg-config xz wget which gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ git make openssl openssl-devel python3 python3-pip python3-devel unzip rsync clang curl libtool automake autoconf jq systemd-devel

    Создайте виртуальное окружение Python:

    python3 -m venv /opt/venv

    Включите GCC toolset:

    sudo cp /opt/rh/gcc-toolset-13/enable /etc/profile.d/gcc-toolset-13.sh
    echo "source /etc/profile.d/gcc-toolset-13.sh" | sudo tee -a /etc/bashrc
  3. Установка CMake

    Установите CMake 3.25.1 вручную:

    CMAKE_VERSION=3.25.1
    ARCH=$(uname -m)
    if [ "$ARCH" = "x86_64" ]; then
      CMAKE_FILE=cmake-${CMAKE_VERSION}-linux-x86_64.sh
    else
      CMAKE_FILE=cmake-${CMAKE_VERSION}-linux-aarch64.sh
    fi
    wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_FILE}
    chmod +x ${CMAKE_FILE}
    ./${CMAKE_FILE} --skip-license --prefix=/usr/local --exclude-subdir
    rm ${CMAKE_FILE}
    cmake --version
    ```4. Скачивание исходного кода Redis
    
    Скачайте архив с исходным кодом определенной версии Redis с GitHub.
    
    Замените `<version>` на версию Redis, например: `8.0.0`.
    

    cd /usr/src wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz

  4. Распаковка архива с исходным кодом

    Создайте директорию для исходного кода и распакуйте содержимое в нее:

    cd /usr/src
    tar xvf redis-<version>.tar.gz
    rm redis-<version>.tar.gz
  5. Сборка Redis

    Включите GCC toolset, установите необходимые переменные окружения и соберите Redis:

    source /etc/profile.d/gcc-toolset-13.sh
    cd /usr/src/redis-<version>
    export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes
    make -j "$(nproc)" all
  6. Запуск Redis

    cd /usr/src/redis-<version>
    ./src/redis-server redis-full.conf

Сборка и запуск Redis со всеми структурами данных - macOS 13 (Ventura) и macOS 14 (Sonoma)

  1. Установка Homebrew

    Если Homebrew еще не установлен, следуйте инструкциям на домашней странице Homebrew.

  2. Установка необходимых пакетов

    export HOMEBREW_NO_AUTO_UPDATE=1
    brew update
    brew install coreutils
    brew install make
    brew install openssl
    brew install llvm@18
    brew install cmake
    brew install gnu-sed
    brew install automake
    brew install libtool
    brew install wget
  3. Установка Rust

    Rust требуется для сборки пакета JSON.

    RUST_INSTALLER=rust-1.80.1-$(if [ "$(uname -m)" = "arm64" ]; then echo "aarch64"; else echo "x86_64"; fi)-apple-darwin
    wget --quiet -O ${RUST_INSTALLER}.tar.xz https://static.rust-lang.org/dist/${RUST_INSTALLER}.tar.xz
    tar -xf ${RUST_INSTALLER}.tar.xz
    (cd ${RUST_INSTALLER} && sudo ./install.sh)
    ```4. Скачивание исходного кода Redis
    
    Скачайте конкретную версию архива исходного кода Redis с GitHub.
    
    Замените `<version>` на версию Redis, например: `8.0.0`.
    

    cd ~/src wget -O redis-.tar.gz https://github.com/redis/redis/archive/refs/tags/.tar.gz

  4. Распаковка архива исходного кода

    Создайте директорию для исходного кода и распакуйте содержимое в нее:

    cd ~/src
    tar xvf redis-<version>.tar.gz
    rm redis-<version>.tar.gz
  5. Сборка Redis

    cd ~/src/redis-<version>
    export HOMEBREW_PREFIX="$(brew --prefix)"
    export BUILD_WITH_MODULES=yes
    export BUILD_TLS=yes
    export DISABLE_WERRORS=yes
    PATH="$HOMEBREW_PREFIX/opt/libtool/libexec/gnubin:$HOMEBREW_PREFIX/opt/llvm@18/bin:$HOMEBREW_PREFIX/opt/make/libexec/gnubin:$HOMEBREW_PREFIX/opt/gnu-sed/libexec/gnubin:$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH"
    export LDFLAGS="-L$HOMEBREW_PREFIX/opt/llvm@18/lib"
    export CPPFLAGS="-I$HOMEBREW_PREFIX/opt/llvm@18/include"
    mkdir -p build_dir/etc
    make -C redis-8.0 -j "$(nproc)" all OS=macos
    make -C redis-8.0 install PREFIX=$(pwd)/build_dir OS=macos
  6. Запуск Redis

    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
    build_dir/bin/redis-server redis-full.conf

Сборка и запуск Redis со всеми структурами данных - macOS 15 (Sequoia)

Поддержка и инструкции будут предоставлены позже.

Сборка Redis - флаги и общие замечания

Redis можно скомпилировать и использовать на Linux, OSX, OpenBSD, NetBSD, FreeBSD. Мы поддерживаем архитектуры с большим и малым порядком байтов, а также 32-битные и 64-битные системы.

Он может компилироваться на системах, производных от Solaris (например, SmartOS), но наша поддержка этой платформы наилучшими усилиями и Redis не гарантируется работать так же хорошо, как на Linux, OSX и *BSD.Чтобы собрать Redis со всеми структурами данных (включая JSON, временные ряды, Bloom filter, cuckoo filter, count-min sketch, top-k и t-digest) и с Redis Query Engine, сначала убедитесь, что все предварительные условия установлены (см. инструкции по сборке выше, для каждой операционной системы). Вам нужно использовать следующий флаг в команде make:

make BUILD_WITH_MODULES=yes

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

make

Чтобы собрать Redis с поддержкой TLS, вам потребуются библиотеки разработки OpenSSL (например, libssl-dev на Debian/Ubuntu) и следующий флаг в команде make:

make BUILD_TLS=yes

Чтобы собрать Redis с поддержкой systemd, вам потребуются библиотеки разработки systemd (например, libsystemd-dev на Debian/Ubuntu или systemd-devel на CentOS), и следующий флаг:

make USE_SYSTEMD=yes

Чтобы добавить суффикс к именам программ Redis, добавьте следующий флаг:

make PROG_SUFFIX="-alt"

Вы можете собрать 32-битную версию Redis, используя:

make 32bit

После сборки Redis, рекомендуется протестировать его с помощью:

make test

Если TLS собран, запуск тестов с включенным TLS (вам потребуется установленный tcl-tls):

./utils/gen-test-certs.sh
./runtest --tls

Исправление проблем сборки с зависимостями или кэшированными параметрами сборки

Redis имеет некоторые зависимости, которые включены в директорию deps. Команда make не пересобирает зависимости автоматически, даже если что-то в исходном коде зависимостей изменяется.Когда вы обновляете исходный код с помощью git pull или когда код внутри дерева зависимостей изменяется каким-либо другим способом, убедитесь, что вы используете следующую команду, чтобы полностью очистить все и пересобрать с нуля:

make distclean

Это очистит: jemalloc, lua, hiredis, linenoise и другие зависимости.

Также, если вы принудительно задаете определенные параметры сборки, такие как 32-битная целевая платформа, отсутствие оптимизаций компилятора C (для целей отладки) и другие подобные параметры сборки, эти параметры будут кэшироваться бессрочно до тех пор, пока вы не выполните команду make distclean.

Исправление проблем при сборке 32-битных бинарников

Если после сборки Redis с 32-битной целевой платформой вам нужно пересобрать его с 64-битной целевой платформой или наоборот, вам необходимо выполнить make distclean в корневом каталоге дистрибутива Redis.

В случае ошибок сборки при попытке создать 32-битный бинарник Redis, попробуйте следующие шаги:

  • Установите пакет libc6-dev-i386 (также попробуйте g++-multilib).
  • Попробуйте использовать следующую командную строку вместо make 32bit: make CFLAGS="-m32 -march=native" LDFLAGS="-m32"

АлокаторВыбор нестандартного аллокатора памяти при сборке Redis осуществляется путем установки переменной окружения MALLOC. Redis по умолчанию компилируется и связывается с libc malloc, за исключением случаев, когда jemalloc является стандартным на системах Linux. Этот стандарт был выбран, так как jemalloc доказал, что у него меньше проблем с фрагментацией, чем у libc malloc.Чтобы принудительно скомпилировать с использованием libc malloc, используйте:

make MALLOC=libc

Чтобы скомпилировать с использованием jemalloc на системах Mac OS X, используйте:

make MALLOC=jemalloc

Монотонные часы

По умолчанию Redis будет собираться с использованием функции POSIX clock_gettime в качестве источника монотонных часов. На большинстве современных систем можно использовать внутренние часы процессора для повышения производительности. Осторожность при использовании TSC можно найти здесь: http://oliveryang.net/2015/09/pitfalls-of-TSC-usage/

Чтобы собрать с поддержкой внутренних часов процессора, используйте:

make CFLAGS="-DUSE_PROCESSOR_CLOCK"

Подробный процесс сборки

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

make V=1

Запуск Redis с TLS

Пожалуйста, ознакомьтесь с файлом TLS.md для получения более подробной информации о том, как использовать Redis с TLS.### Вклады в код

Отправляя код в проект Redis в любой форме, включая отправку pull request через GitHub, фрагмент кода или патч через приватную электронную почту или публичные обсуждения, вы соглашаетесь предоставить ваш код на условиях Соглашения о передаче прав и лицензии на вклад в проект Redis. Подробную информацию см. в файле CONTRIBUTING.md в этом исходном дистрибутиве. Для уязвимостей и ошибок безопасности, пожалуйста, см. SECURITY.md. Открытые релизы Redis подпадают под следующие лицензии:

  1. Версии 7.2.x и более ранние выпуски подпадают под лицензию BSDv3. Эти вклады в исходный проект Redis принадлежат их авторам и лицензированы под лицензией 3BSDv3, как указано в файле REDISCONTRIBUTIONS.txt. Любая копия этой лицензии в этом репозитории применяется только к этим вкладам;2. Версии 7.4.x до 7.8.x подпадают под ваш выбор лицензии RSALv2 или SSPLv1;

  2. Версия 8.0.x и последующие выпуски подпадают под три лицензии RSALv2/SSPLv1/AGPLv3 на ваш выбор, как указано в файле LICENSE.txt.

Торговые марки Redis

Цель торговой марки — идентифицировать товары и услуги лица или компании без создания путаницы. В качестве зарегистрированного владельца своего имени и логотипа, Redis допускает определенные ограниченные использования своих торговых марок, но у него есть требования, которые должны соблюдаться, как описано в его Руководстве по торговым маркам, доступном по адресу: https://redis.io/legal/trademark-policy/.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Redis — это высокопроизводительная key-value база данных. Появление Redis в значительной степени компенсировало недостатки key-value хранилищ, подобных memcached, и в некоторых случаях может служить хорошим дополнением к реляционным базам данных. Развернуть Свернуть
BSD-2-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-redis.git
git@api.gitlife.ru:oschina-mirror/mirrors-redis.git
oschina-mirror
mirrors-redis
mirrors-redis
unstable