キーバリューデータベースシステム Redis のインストールと基本操作,Python からの使用(ソースコードを使用)(Ubuntu 上)
このページでは,GitHub の公式リポジトリからソースコードを取得し,Redis 本体(コア)をビルドして使用する手順を示す.2026年8月時点の最新の安定版系列は Redis Open Source 8.10 である(7.0 系列はサポート終了)。バージョン 8.0 以降は RSALv2/SSPLv1/AGPLv3 のトライライセンスである。
【サイト内の関連ページ】
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now
C/C++ コンパイラと Make とビルドツールのインストール
ソフトウェアをソースコードからビルドするには、C/C++コンパイラ (通常はGCC) や make ユーティリティといった開発ツールが必要である。Ubuntuでは、これらのツールは build-essential パッケージにまとめられている。インストールするには,端末で,次のコマンドを実行する。
sudo apt -y install build-essential libtool texinfo dpkg-dev pkg-config
libtool, texinfo, dpkg-dev, pkg-config は、より複雑なビルドやパッケージ管理の際に役立つ開発関連ツールである。
Git のインストール
端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install git
テスト実行用ソフトウェアのインストール
Redis の make test は tcl で記述されたテストスクリプトを使用する。端末で,次のコマンドを実行する。
sudo apt -y install tcl
インストール
- ソースコードの入手
cd /usr/local sudo rm -rf redis sudo git clone https://github.com/redis/redis.git sudo chown -R $USER redis最新の安定版を指定して取得するときは,バージョンのタグを指定する(例:8.10.0)。
cd /usr/local/redis git checkout 8.10.0
- ビルド
cd /usr/local/redis makeモジュール(JSON, 時系列, Bloom フィルタ, Query Engine など)のソースコードを取得していない状態では,Redis 本体(コア)のみがビルドされる。モジュールを含めてビルドする場合は
make modules-updateでモジュールを取得した後にビルドするが,LLVM,CMake(3.25 以上 3.31.6 以下),Rust などのバージョンに依存した追加の前提ソフトウェアが必要になる(make bootstrap listで不足しているものを確認できる)。
- 結果の確認
エラーメッセージが出ていないこと
- テスト
make test
- 結果の確認
エラーメッセージが出ていないこと
- インストール
make installにより,実行ファイル(redis-server, redis-cli など)が/usr/local/binにインストールされる。sudo make install
- 結果の確認
エラーメッセージが出ていないこと,および,バージョンが表示されること
redis-server --version
- カーネルパラメータの設定
Redis はデータをディスクに保存する際に子プロセスを生成する。このとき,Linux カーネルのメモリオーバーコミットが無効であると保存に失敗することがあるため,
vm.overcommit_memoryを 1 に設定する。また,Transparent Huge Pages (THP) が有効であると,遅延やメモリ使用量の増加が発生するため無効にする。設定は,端末で,次のコマンドを実行する。# メモリオーバーコミットの有効化(再起動後も有効にする設定を含む) sudo sysctl vm.overcommit_memory=1 echo "vm.overcommit_memory = 1" | sudo tee -a /etc/sysctl.conf # Transparent Huge Pages の無効化(次回起動時までの設定) echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
Redis を使ってみる
- 試しに,サーバを起動してみる
サーバの起動は /usr/local/bin/redis-server コマンドで行う.設定ファイルを指定しない場合は既定の設定(ポート 6379)で起動する.終了は Ctrl + C で行う.
/usr/local/bin/redis-server
- 試しに,Redis コマンドラインクライアントを起動してみる
サーバを起動した端末とは別の端末を開き,次のコマンドを実行する.
redis-cli
- key-value ストアの例
set x 100 get x set "p1" "\"#<struct Struct::Product name=\\\"kaneko\\\", price=120, qty=20>\"" get p1
- リスト操作の例
lpush mylist apple lpush mylist orange lpush mylist car lrange mylist 0 -1
- 集合操作の例
sadd myset a1 sadd myset b2 sadd myset c3 smembers myset scard myset
Python で Redis を使ってみる
- 前準備として python3-redis をインストール
端末で,次のコマンドを実行する.
sudo apt -y install python3-redis - key-value ストアの例
接続には
redis.Redisを使用する(旧来のStrictRedisは現在の redis-py ではRedisの別名である)。decode_responses=Trueを指定すると,取得した値がバイト列ではなく文字列になる。import redis r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True) r.set("x", 100) print( r.get("x") ) r.set("p1", "\"#<struct Struct::Product name=\\\"kaneko\\\", price=120, qty=20>\"") print( r.get("p1") ) - リスト操作の例
import redis r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True) r.lpush( "mylist", "apple" ) r.lpush( "mylist", "orange" ) r.lpush( "mylist", "car" ) print( r.lrange( "mylist", 0, -1 ) ) - 集合操作の例
import redis r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True) r.sadd( "myset", "a1" ) r.sadd( "myset", "b2" ) r.sadd( "myset", "c3" ) print( r.smembers( "myset" ) ) print( r.scard( "myset" ) )