Within the Python international, many builders love the NoSQL database Redis as a result of its velocity and the supply of a powerful collection of shopper libraries. Within the WordPress international, Redis is incessantly the go-to era when a continual object cache is had to accelerate backend information get entry to.

You’ll carry those two worlds in combination whilst you manipulate that WordPress content material with a Python software.

On this educational, we exhibit find out how to publish content material at once to Redis via development a Python app that makes use of the preferred redis-py library and find out how to publish during the WordPress REST API.

What’s Redis?

Redis, or Far flung Dictionary Server, is a quick NoSQL database and in-memory cache advanced via Salvatore Sanfilippo and maintained via Redis Ltd. (previously Redi Labs). The open-source releases of Redis are to be had below Berkeley Supply Distribution (BSD) licensing, whilst Redis Ltd. additionally supplies business undertaking and cloud incarnations of the server.

Redis distinguishes itself from different NoSQL databases via its information garage mechanism. It’s in most cases referred to as a knowledge construction retailer as it retail outlets information with the similar information sorts discovered in lots of programming languages, together with strings, units, lists, and dictionaries (or hashes). Along with supporting easy constructions, Redis helps complex information constructions for duties like geolocation and flow processing.

Python app must haves

Sooner than you get started growing your app, you want to put in the next 3 pieces in the community:

Professional tip: You’ll simply create this construction atmosphere inside Docker via putting in Kinsta’s WordPress-ready DevKinsta package deal.

With the necessities put in, it’s time to make issues paintings in combination. In particular, you’re making a Python app that takes a consumer’s WordPress publish in dictionary structure and saves it to a Redis cache.

Making a Python app to retailer a publish within the Redis cache

Redis cache is a good caching mechanism for web pages. It retail outlets incessantly asked knowledge for sooner, extra handy get entry to. The cache retail outlets knowledge in a key-value information construction.

Start via growing a brand new folder on your mission named python-redis. Later on, get started up your command terminal, cd to python-redis, and set up redis-py via working the next command:

pip set up redis

When the set up is whole, create a brand new record named primary.py within the python-redis listing. Open the record for your favourite textual content editor to go into the code blocks underneath.

Get started via uploading the newly put in redis-py library and set the Redis host and port deal with:

import redis
redis_host = 'localhost'
redis_port = 6379

Now, outline the values for the WordPress publish as key/cost pairs in a dictionary. Right here’s an instance:

publish = {
    'ID': 1,
    'post_author': 1,
    'post_date': '2024-02-05 00:00:00',
    'post_date_gmt': '2024-02-05 00:00:00',
    'post_content': 'Check Put up 
comparable weblog publish', 'post_title': 'My first publish', 'post_excerpt': 'On this publish, I can...', 'post_status': 'post', 'comment_status': 'open', 'ping_status': 'open', 'post_password': 'my-post-pwd', 'post_name': 'my-first-post', }

Be aware: In a real-world software, that publish content material would most likely come from an HTML enter shape.

Add to the code with a redis_dict() serve as that may attach together with your native Redis server, retailer the above publish to the Redis cache, and print the effectively created values to the console:

def redis_dict():
    check out:
        r = redis.StrictRedis(host = redis_host, port = redis_port, decode_responses=True)
        r.hset("newPostOne", mapping=publish)
        msg = r.hgetall("newPostOne")
        print(msg)
    aside from Exception as e:
        print(f"One thing went unsuitable {e}")

# Runs the serve as:
if __name__ == "__main__":
    redis_dict()

Except you introduced Redis inside Docker, invoke the Redis command line interface with the next command:

redis-cli

Now run your Python script:

python primary.py

Executing the script provides the publish to the Redis key-value retailer. You will have to see the next reaction for your terminal’s console:

Screenshot of the terminal showing data posted via Python to a Redis database.
Console output appearing Python app publish added to Redis garage.

You’ve effectively saved a publish for your native Redis database.

Now, let’s add this publish for your WordPress website the usage of the WordPress REST API, storing it within the default MariaDB or MySQL database as an alternative of Redis.

Add a publish to WordPress the usage of the REST API

The WordPress REST API supplies a suite of endpoints you’ll be able to name out of your app to have interaction with WordPress. We use the publish endpoint to create a publish in WordPress.

Step 1: Set the appliance password in WordPress

The WordPress API calls for an software password to allow your app to get entry to information from the WordPress website. The password is a 24-character secret key, which you should come with in each request to the REST API.

Generate an software password at the Person Profile web page of the WordPress Dashboard. You’ll assign a user-friendly identify to every software password, however you gained’t be capable of view the password itself after producing it (so keep a copy now):

Screenshot showing the interface for generating an API password in WordPress.
Producing an software password within the WordPress Dashboard.

Step 2: Put up to WordPress together with your Python app

First, set up the Python requests library for making the HTTP request to the WordPress API. To try this, run the next command at the terminal:

pip set up requests

Subsequent, inside of your python-redis folder, create a brand new record named app.py. Then, open the record together with your textual content editor.

Start via uploading the requests, json, and base64 modules:

import requests
import json
import base64

Outline the API base URL, in addition to your WordPress username and password. For the password variable, use the appliance password that you just generated in WordPress:

url = 'http://localhost/wp-json/wp/v2'
consumer = ''
password = ''

Now, sign up for consumer and password, encode the outcome, and move it to the request headers:

creds = consumer + ":" + password
token = base64.b64encode(creds.encode())
header = {'Authorization': 'Fundamental ' + token.decode('utf-8')}

And right here’s the publish frame:

publish = {    
    'creator': 1,
    'date': '2024-02-05 00:00:00',
    'date_gmt': '2024-02-05 00:00:00',
    'content material': 'Check Put up 
comparable weblog publish', 'identify': 'My moment publish', 'excerpt': 'On this publish, I can...', 'standing': 'post', 'comment_status': 'open', 'ping_status': 'open', 'password': 'my-post-pwd', 'slug': 'my-second-post', }

Arrange the POST request to the API and a command to print the reaction standing:

r = requests.publish(url + '/posts', headers=header, json=publish)
print(r)

Run your script with the next command within the terminal:

python app.py

For those who gained a 201 reaction (“Created”), it approach the useful resource was once effectively added.

Screenshot of the terminal reporting a 201 response code after posting to WordPress via Python.
A 201 reaction code is returned on a a success publish.

You’ll verify this for your WordPress dashboard or your website’s MySQL/MariaDB database.

Use Redis cache at once in WordPress

WordPress web pages can use the Redis cache to briefly retailer items, comparable to posts, pages, or customers. The thing can then be accessed from the cache when wanted. This way saves treasured time, reduces latency, and improves the website’s capability to scale and maintain extra visitors.

Redis for Kinsta consumers

A quick load time is essential for a nice consumer revel in, and there’s little room for underperformance. That’s why Kinsta supplies Redis as a top rate add-on.

For patrons who wish to profit from the Redis add-on, merely achieve out to Kinsta strengthen, and we’ll maintain the set up procedure and set it up for you.

Putting in a Redis plugin

For those who’re no longer a Kinsta buyer, you’ll want to set up a devoted plugin in your WordPress website.

For instance, let’s set up the Redis Object Cache plugin in your native WordPress web site.

Screenshot: Selecting the Redis Object Cache plugin for installation in WordPress.
The Redis Object Cache plugin.

Open the wp-config.php record in a textual content editor and add the next code within the phase for customized configuration variables:

outline('WP_REDIS_CLIENT', 'predis');
outline('WP_REDIS_HOST', 'localhost');
outline('WP_REDIS_PORT', '6379');

Be aware: The deal with of your Redis host is dependent upon your server configuration.

Navigate to Settings > Redis within the WordPress dashboard. You will have to see one thing very similar to this:

Screenshot: Settings page for the Redis Object Cache plugin in WordPress.
The Redis Object Cache plugin is displayed throughout the Settings tab.

The Redis cache has now effectively changed the former MySQL database.

As well as, the frontend WordPress website makes use of the similar cache because the backend Python software. You’ll check this via opening a brand new terminal and working the next command:

redis-cli track

As you navigate your website, web site requests will output into the command steered:

Screenshot showing Redis server requests within the terminal.
Tracking server requests within the terminal with redis-cli.

Now that the back and front ends are in sync, you’ll be able to add a brand new publish to WordPress the usage of your Python app during the REST API.

To try this, alter the POST object in app.py to incorporate your new publish, then run python app.py so as to add the publish to the cache.

Abstract

On this article, we discovered find out how to attach a Redis database to a Python software the usage of the Redis Python shopper. This shopper helps a number of codecs for Redis information retail outlets: lists, units, dictionaries, and different command information sorts.

We additionally noticed how it’s essential to combine Redis right into a WordPress website by means of the REST API and the Redis Object Cache plugin.

The facility to make use of Redis in-memory cache on your website makes it a potent and versatile construction software. Redis is very efficient at making improvements to your database question velocity, website efficiency, and basic consumer revel in.

An advantage: You’ll have Kinsta deal with Redis set up on your WordPress website. Moreover, Redis enthusiasts will to find their favourite server to be had as a stand-alone implementation in Kinsta’s Controlled Database Web hosting carrier.

The publish Energy up WordPress with Python and Redis gave the impression first on Kinsta®.

WP Hosting

[ continue ]