Redis と Pickle を活用した Python オブジェクトの永続化

概要

Redis はメモリ上でデータを扱うキーバリューストアで、値としてバイト列を保存する。一方、整数やリスト、辞書、自作クラスのインスタンスといった Python のオブジェクトは、そのままではバイト列ではない。そこで pickle を使い、オブジェクトをバイト列へ変換(pickle.dumps)してから Redis に保存し、取り出したバイト列をオブジェクトへ戻す(pickle.loads)。これにより、Python のオブジェクトを Redis に保存し、あとで元の形で読み出せる。

ここでは Python 3.12 と redis-py(Python から Redis を操作するライブラリ)を用いる。

目次

関連する外部ページ

【サイト内の関連ページ】

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") )