キーバリューデータベースシステム Redis のインストールと基本操作、Python からの使用(Ubuntu 上)
【概要】
Redis(レディス)は、キーと値の組で高速にデータを扱うインメモリ型のデータベースである。本ページでは、Ubuntu 上に Redis の最新安定版を公式 APT リポジトリから導入し、コマンドライン(redis-cli)と Python から基本操作を行う手順を説明する。文字列型、リスト型、集合型の各操作を例示する。
【目次】
【関連する外部ページ】
Redis 公式ダウンロードページ:https://redis.io/downloads/
Redis 公式コマンドリファレンス:https://redis.io/commands
【サイト内の関連ページ】
1. Redis のインストール
Ubuntu の場合、Redis 公式ドキュメントに基づき、公式 APT リポジトリ(packages.redis.io)から最新安定版をインストールするのが確実である(一次情報:Redis 公式インストール手順)。以下のコマンドを実行する。
# リポジトリの署名鍵と登録に必要なパッケージを導入
sudo apt-get install lsb-release curl gpg
# 公式リポジトリの署名鍵を登録
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
# APT にリポジトリを追加
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
# パッケージ一覧を更新して Redis を導入
sudo apt-get update
sudo apt-get install redis
この手順では最新安定版の Redis(redis-cli などを含む redis-tools を同梱)が導入される。インストール後、Redis サーバは自動的に起動し、システム起動時にも起動する設定となる。自動起動しない場合は次を実行する。
sudo systemctl enable redis-server
sudo systemctl start redis-server
2. Redis サーバの起動と確認
サーバの稼働状態は次のコマンドで確認できる。PONG が返れば正常である。
redis-cli ping
3. コマンドラインによる基本操作
Redis のコマンドラインクライアントは次のコマンドで起動する。終了は exit を入力する。
redis-cli
- キーバリュー操作の例
set x 100 get x set "p1" "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
4. Python による基本操作
Redis を操作する公式ライブラリ redis-py を導入する。
pip install -U --no-user redis
接続には redis.Redis クラスを使う。既定では取得結果がバイト列で返るため、文字列として扱うには decode_responses=True を指定する(一次情報:redis-py 公式(PyPI))。
- キーバリューストアの例
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", "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( "plist", "apple" ) r.lpush( "plist", "orange" ) r.lpush( "plist", "car" ) print( r.lrange( "plist", 0, -1 ) )
- 集合操作の例
import redis r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True) r.sadd( "pset", "a1" ) r.sadd( "pset", "b2" ) r.sadd( "pset", "c3" ) print( r.smembers( "pset" ) ) print( r.scard( "pset" ) )