[Python][WSL] Python から Redis を操作する

  • 2022年9月18日
  • 2022年9月18日
  • Python
  • 13View
  • 0件

はじめに

Python から Redis を操作する

動作環境

  • Windows 11
  • WSL Ubuntu 20.04
  • Python 3.8.10
  • Redis Server 5.0.7

事前準備

WSL ディストリビューションの複製(非必須)

お試しで実行する場合は WSL Ubuntu イメージを複製しておくのがお勧めです。
本手順は必須ではありません。

各種インストール

Ubuntu パッケージのアップデート

初めに、Ubuntu パッケージを最新化しておきます。

$ sudo apt update
$ sudo apt upgrade
Redis Server

Ubuntu に Redis Server をインストールします。

$ sudo apt install redis-server

バージョン 5.0.7 の Redis がインストールされました。

$ redis-server --version
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=66bd629f924ac924
Python パッケージ

まずパッケージ管理のために pip をインストールします。

$ sudo apt install python3-pip

そのあと、Python 用の redis パッケージをインストールします。

$ pip install redis

Redis Server の起動

WSL Ubuntu では systemctl がデフォルトでは利用できないためか、Redis インストール後に手動で起動する必要があります。
service コマンドを実行して redis-server を起動させます。

$ sudo service redis-server start
Starting redis-server: redis-server.

Python コード

Python から redis を操作するためのサンプルコードです。
"greeting" というキーに対して "Hello World!" の文字列をセットします。
そのあとに、セットしたばかりの文字列を取得します。

import redis

db = redis.Redis(host="localhost", port=6379, db=0)

db.set("greeting", "Hello World!")
print(db.get("greeting").decode())

実行すると 、redis から取得した文字列が出力されます。

$ python3 main.py
Hello World!

もちろん、一度セットした後は次のように get するだけで Hello World! の文字列が出力されます。

import redis

db = redis.Redis(host="localhost", port=6379, db=0)
print(db.get("greeting").decode())

注意点

systemctl によって Redis がサービスとして登録されていないため、WSL の再起動などが発生すると Redis は自動的には起動してきません。

Redis が落ちている状態でアクセスしようとすると、Python では次のようなエラーが発生します。

redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.

このような場合は sudo service redis-server start のコマンドで Redis を起動させてあげましょう。