はじめに
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 を起動させてあげましょう。