В мире Python многие разработчики любят NoSQL-базу данных Redis за ее скорость и наличие большого количества клиентских библиотек. В мире WordPress Redis часто используется в качестве технологии, когда требуется постоянный объектный кэш для ускорения доступа к внутренним данным. Вы можете объединить эти два мира, когда будете манипулировать содержимым WordPress с помощью приложения на Python.
В этом руководстве мы покажем, как размещать контент непосредственно в Redis, создав приложение на Python, использующее популярную библиотеку redis-py, и как размещать контент через WordPress REST API.
Что такое Redis?
Redis, или Remote Dictionary Server, — это быстрая NoSQL база данных и кэш in-memory, разработанная Сальваторе Санфилиппо и поддерживаемая Redis Ltd. (ранее Redi Labs). (ранее Redi Labs). Релизы Redis с открытым исходным кодом доступны под лицензией Berkeley Source Distribution (BSD), а Redis Ltd. также предоставляет коммерческие корпоративные и облачные версии сервера.
Redis отличается от других баз данных NoSQL механизмом хранения данных. Обычно его называют хранилищем структур данных, поскольку он хранит данные с помощью тех же типов данных, которые встречаются во многих языках программирования, включая строки, множества, списки и словари (или хэши). Помимо поддержки простых структур, Redis поддерживает расширенные структуры данных для таких задач, как геолокация и обработка потоков.
Необходимые условия для приложений на Python
Прежде чем приступить к созданию приложения, вам необходимо локально установить следующие три элемента:
- Redis — обратитесь к официальному руководству по установке Redis, если вам нужны некоторые рекомендации.
- WordPress — ознакомьтесь с нашим руководством по установке WordPress для Windows, macOS и Linux. Убедитесь, что фронтенд WordPress подключен к базе данных MariaDB или MySQL.
- Python и pip — Начиная с Python 3.4, pip, программа установки пакетов Python, включена в пакет по умолчанию.
Когда все необходимые условия установлены, настало время заставить все работать вместе. В частности, вы создаете приложение на Python, которое получает пользовательский пост WordPress и сохраняет его в кэше Redis.
Создание приложения Python для сохранения постов в кэше Redis
Кэш Redis — это эффективный механизм кэширования для веб-сайтов. Он хранит часто запрашиваемую информацию для более быстрого и удобного доступа. Кэш хранит информацию в структуре данных ключ-значение.
Начните с создания новой папки для вашего проекта под названием python-redis. После этого запустите командный терминал, перейдите
в папку python-redis и установите redis-py, выполнив следующую команду:
pip install redis
После завершения установки создайте новый файл main.py в каталоге python-redis. Откройте файл в вашем любимом текстовом редакторе и введите приведенные ниже блоки кода.
Начните с импорта только что установленной библиотеки redis-py и установите адрес хоста и порта Redis:
import redis
redis_host = 'localhost'
redis_port = 6379
Теперь определите значения для постов WordPress в виде пар ключ/значение в словаре. Вот пример:
post = {
'ID': 1,
'post_author': 1,
'post_date': '2024-02-05 00:00:00',
'post_date_gmt': '2024-02-05 00:00:00',
'post_content': 'Тестовый пост
связанный пост в блоге',
'post_title': 'Мой первый пост',
'post_excerpt': 'В этом посте я расскажу...',
'post_status': 'publish',
'comment_status': 'open',
'ping_status': 'open',
'post_password': 'my-post-pwd',
'post_name': 'my-first-post',
}
Дополните код функцией redis_dict()
, которая соединится с вашим локальным сервером Redis, сохранит вышеупомянутый пост в кэше Redis и выведет успешно созданные значения в консоль:
def redis_dict():
try:
r = redis.StrictRedis(host = redis_host, port = redis_port, decode_responses=True)
r.hset("newPostOne", mapping=post)
msg = r.hgetall("newPostOne")
print(msg)
except Exception as e:
print(f "Что-то пошло не так {e}")
# Запускает функцию:
if __name__ == "__main__":
redis_dict()
Если вы не запускали Redis в Docker, вызовите интерфейс командной строки Redis следующей командой:
redis-cli
Теперь запустите ваш Python-скрипт:
python main.py
Выполнение сценария добавляет пост в хранилище ключевых значений Redis. Вы должны увидеть следующий ответ в консоли вашего терминала:
Вы успешно сохранили пост в локальной базе данных Redis.
Теперь давайте загрузим этот пост на ваш сайт WordPress с помощью WordPress REST API, сохранив его в стандартной базе данных MariaDB или MySQL вместо Redis.
Загрузка поста на WordPress с помощью REST API
WordPress REST API предоставляет набор конечных точек, которые вы можете вызывать из своего приложения для взаимодействия с WordPress. Мы используем конечную точку post для создания поста в WordPress.
Шаг 1: Установите пароль приложения в WordPress
API WordPress требует пароль приложения, чтобы разрешить вашему приложению доступ к данным с сайта WordPress. Пароль — это 24-символьный секретный ключ, который вы должны указывать в каждом запросе к REST API.
Сгенерируйте пароль приложения на странице » Профиль пользователя » панели WordPress Dashboard. Вы можете присвоить каждому паролю удобное для пользователя имя, но после генерации пароля вы не сможете просмотреть сам пароль (поэтому сделайте его копию прямо сейчас):
Шаг 2: Отправка сообщений в WordPress с помощью приложения Python
Сначала установите библиотеку Python requests для выполнения HTTP-запроса к WordPress API. Для этого выполните следующую команду в терминале:
pip install requests
Затем в папке python-redis создайте новый файл с именем app.py. Затем откройте файл в текстовом редакторе.
Начните с импорта модулей requests, json и base64:
import requests
import json
import base64
Определите URL-адрес базы API, а также имя пользователя и пароль WordPress. Для переменной password используйте пароль приложения, который вы сгенерировали в WordPress:
url = 'http://localhost/wp-json/wp/v2'
user = '<Ваше имя пользователя здесь>'
password = '<Ваш пароль приложения здесь>'
Теперь соедините user
и password
, закодируйте результат и передайте его в заголовки запроса:
creds = user ":" password
token = base64.b64encode(creds.encode())
header = {'Authorization': 'Basic ' token.decode('utf-8')}
А вот тело сообщения:
post = {
'author': 1,
'date': '2024-02-05 00:00:00',
'date_gmt': '2024-02-05 00:00:00',
'content': 'Тестовый пост
связанный пост блога',
'title': 'Мой второй пост',
'excerpt': 'В этом посте я расскажу...',
'status': 'publish',
'comment_status': 'open',
'ping_status': 'open',
'password': 'my-post-pwd',
'slug': 'my-second-post',
}
Настройте POST-запрос к API и команду для печати статуса ответа:
r = requests.post(url '/posts', headers=header, json=post)
print(r)
Запустите ваш скрипт в терминале следующей командой:
python app.py
Если вы получили ответ 201 («Created»), это означает, что ресурс был успешно добавлен.
Вы можете подтвердить это в приборной панели WordPress или в базе данных MySQL/MariaDB вашего сайта.
Использование кэша Redis непосредственно в WordPress
Сайты WordPress могут использовать кэш Redis для временного хранения объектов, таких как посты, страницы или пользователи. При необходимости доступ к объекту можно получить из кэша. Такой подход позволяет сэкономить драгоценное время, уменьшить задержки и повысить способность сайта к масштабированию и работе с большим трафиком.
Установка плагина Redis
Вам нужно будет установить специальный плагин на свой сайт WordPress.
Например, давайте установим плагин Redis Object Cache на ваш локальный сайт WordPress.
Откройте файл wp-config.php в текстовом редакторе и добавьте следующий код в раздел для пользовательских переменных конфигурации:
define('WP_REDIS_CLIENT', 'predis');
define('WP_REDIS_HOST', 'localhost');
define('WP_REDIS_PORT', '6379');
Примечание: Адрес хоста Redis зависит от конфигурации вашего сервера.
Перейдите к разделу Настройки > Redis в панели управления WordPress. Вы должны увидеть что-то похожее на это:
Теперь кэш Redis успешно заменил предыдущую базу данных MySQL.
Кроме того, фронтенд WordPress-сайта использует тот же кэш, что и бэкенд Python-приложения. Вы можете проверить это, открыв новый терминал и выполнив следующую команду:
redis-cli monitor
По мере навигации по сайту запросы сайта будут выводиться в командную строку:
Теперь, когда фронт- и бэк-энд синхронизированы, вы можете добавить новый пост в WordPress с помощью вашего приложения на Python через REST API.
Для этого измените объект POST в app.py, чтобы включить в него новый пост, а затем запустите python app.py
, чтобы добавить пост в кэш.
Резюме
В этой статье мы узнали, как подключить базу данных Redis к приложению Python с помощью клиента Redis Python. Этот клиент поддерживает несколько форматов для хранилищ данных Redis: списки, наборы, словари и другие командные типы данных.
Мы также рассмотрели, как можно интегрировать Redis в сайт WordPress с помощью REST API и плагина Redis Object Cache.
Возможность использовать кэш-память Redis для вашего сайта делает его мощным и гибким инструментом разработки. Redis чрезвычайно эффективен для повышения скорости запросов к базе данных, производительности сайта и общего удобства работы пользователей.
Переведено с сайта Kinsta
Обратная связь
Если у вас возникнут вопросы или потребуется техническая поддержка, не стесняйтесь обращаться. Связаться с нами можно через контактные данные:
- Электронная почта: Пишите нам на info@kowalski.su для подробных запросов или отправки дополнительных материалов. Мы обеспечиваем оперативный ответ и всестороннюю информацию.
- Телефон: Звоните на номер +7 (906) 825 44-41 для немедленной помощи или консультации. Рабочие часы с 7:00 до 15:00 (МСК).
- Telegram: Для быстрой связи используйте наш Telegram-канал @ivan_zh. Идеально подходит для получения оперативных ответов.
Откройте новые возможности с интеграцией WordPress и Bitrix24
Отличных вам сайтов!