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

OSCHINA-MIRROR/josinli-mysql_redis

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

MySQL-Redis

  1. Что такое MySQL-Redis?

MySQL-Redis — это UDF (пользовательский плагин для MySQL), который позволяет работать с Redis в MySQL, но не может функционировать отдельно от MySQL.

  1. Поддерживаемые системы

Плагин MySQL-Redis можно скомпилировать на операционной системе, которая поддерживает стандартный компилятор C99. Однако ограничения среды поддержки hiredis-vip ограничивают область применения MySQL-Redis.

  1. Может ли MySQL-Redis работать с кластером Redis?

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

  1. Производительность

Производительность зависит от сети. Плагин работает быстро при взаимодействии с Redis благодаря использованию языка C.

  1. Сценарии использования

Можно использовать в ситуациях, где требуется согласованность данных между Redis и MySQL.

  1. Функции MySQL-Redis
  • RedisConnect («127.0.0.1», 6379) — устанавливает соединение с одиночным Redis. Второй параметр можно опустить, по умолчанию используется порт 6379. Соответствующий SQL-код:

SELECT RedisConnect("127.0.0.1", 6379);

  • RedisClusterConnect — устанавливает соединение с кластером Redis. Соответствующий SQL-код:

SELECT RedisClusterConnect("127.0.0.1:6379,127.0.0.2:6379");

Несколько машин разделяются запятой.

  • RedisConnectFree — освобождает соединение, установленное с помощью RedisConnect(). В текущей версии не реализован пул соединений, он будет добавлен в будущих версиях. Соответствующий SQL-код:

SELECT RedisConnectFree();

  • RedisClusterConnectFree — освобождает соединение, установленное с помощью RedisClusterConnect(). В текущей версии не реализован пул соединений, он будет добавлен в будущих версиях. Использование:

SELECT RedisClusterConnectFree();

  • RedisSet — быстрый способ установки пары ключ-значение. Соответствующий SQL-код:

SELECT RedisSet("a", 1); — эквивалентно SET a 1 в Redis.

  • RedisClusterSet — установка пары ключ-значение для кластера Redis. Параметры аналогичны функции RedisSet.

  • RedisExecCommand — выполняет команду Redis. Включает три или два параметра. Пример SQL:

Три параметра:

SELECT RedisExecCommand("SET", "a", 1).

Два параметра:

SELECT RedisExecCommand("SELECT", 1).

  • RedisClusterExecCommand — выполнение команды Redis для кластера. Параметры аналогичны RedisExecCommand.

  • RedisRawCommand — выполняет полную команду Redis. SQL-код:

SELECT RedisRawCommand("SET Hello World").

  • RedisClusterRawCommand — выполнение полной команды Redis для кластера. Параметры аналогичны RedisRawCommand.

  • RedisListIndex — получает элемент из структуры данных Redis List. Первый параметр представляет структуру данных, второй — индекс элемента. Пример:

SELECT RedisListIndex(RedisRawCommand("LRANGE score_lists 0 10"), 1).

  • RedisListJoin — объединяет все элементы структуры данных Redis List в одну строку. Второй параметр определяет разделитель. Пример:

SELECT RedisListJoin(RedisRawCommand("LRANGE score_lists 0 10"), "-").

Если структура Redis List выглядит следующим образом:

0 1 2

то результат объединения будет:

0-1-2.

  1. Возвращаемые значения

В случае успешного выполнения функций RedisSET, RedisClusterSet, RedisConnect, RedisConnectFree, RedisClusterConnect и RedisClusterConnectFree возвращается значение 1, иначе SQL-оператор считается ошибочным.

Функции RedisExecCommand, RedisClusterExecCommand, RedisRawCommand, RedisClusterRawCommand, RedisListIndex и RedisListJoin возвращают строку. Если команда Redis SET выполнена успешно, возвращается «OK». При выполнении GET возвращается конкретное значение.

  1. Установка

Необходимые условия:

— установлены Redis, MySQL (версия 5.7.22 для разработки) и hiredis-vip.

После подготовки необходимых условий можно приступить к установке плагина MySQL-Redis:

  1. Клонируйте репозиторий кода:

git clone https://gitee.com/josinli/mysql_redis.git.

  1. Измените файл CMakeLists.txt, поскольку в репозитории используется система сборки CMake:

cmake_minimum_required(VERSION 3.13) project(udf_redis C)

set(CMAKE_C_STANDARD 99)

include_directories( . /usr/local/mysql/include/ # измените эту строку на путь к каталогу заголовков вашей системы MySQL /usr/local/include/hiredis-vip # измените эту строку на путь к каталогу заголовков hiredis-vip вашей системы )

link_directories( /usr/local/lib # измените эту строку на каталог lib hiredis-vip вашей системы )

add_library(udf_redis SHARED mysql_redis.c mysql_redis.h)

target_link_libraries(udf_redis hiredis_vip)

  1. После внесения изменений выполните следующие действия:

cd build cmake .. make.

Вы увидите, что в каталоге build создан файл библиотеки libudf_redis.so или libudf_redis.dylib.

  1. Перейдите в MySQL и выполните следующий SQL-запрос, чтобы найти каталог плагинов MySQL:

SHOW VARIABLES LIKE 'plugin_dir%';.

  1. Скопируйте файл libudf_redis.sо или libudf_redis.dylib из предыдущего шага в каталог, указанный в предыдущем запросе.

  2. В зависимости от вашей операционной системы скопируйте create_function_linux.sql или create_function_osx.sql и выполните его.

  3. Перезапустите MySQL и начните использовать Redis через SQL!

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

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

Введение

В SQL оперировать Redis или кластером Redis, чтобы достичь согласованности данных между Redis и MySQL. Развернуть Свернуть
C и 2 других языков
BSD-3-Clause-Clear
Отмена

Обновления

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

Участники

все

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

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