Redis と Pickle を活用した Python オブジェクトの永続化
【概要】
Redis はメモリ上でデータを扱うキーバリューストアで、値としてバイト列を保存する。一方、整数やリスト、辞書、自作クラスのインスタンスといった Python のオブジェクトは、そのままではバイト列ではない。そこで pickle を使い、オブジェクトをバイト列へ変換(pickle.dumps)してから Redis に保存し、取り出したバイト列をオブジェクトへ戻す(pickle.loads)。これにより、Python のオブジェクトを Redis に保存し、あとで元の形で読み出せる。
ここでは Python 3.12 と redis-py(Python から Redis を操作するライブラリ)を用いる。
【目次】
【関連する外部ページ】
【サイト内の関連ページ】
1. サンプルコード
次のコードは、整数 100 を pickle でバイト列に変換して Redis のキー x に保存し、取り出して元の整数へ戻す例である。pickle.dumps でオブジェクトをバイト列に変換し、pickle.loads でバイト列からオブジェクトへ戻す。redis-py の get はバイト列を返すため、そのまま pickle.loads に渡せる。
import redis
import pickle
r = redis.StrictRedis(host='localhost', port=6379, db=0)
x = 100
r.set("x", pickle.dumps(x))
pickle.loads( r.get("x") )