キーバリューデータベースシステム Redis のインストールと基本操作、Python からの使用(Ubuntu 上)

概要

Redis(レディス)は、キーと値の組で高速にデータを扱うインメモリ型のデータベースである。本ページでは、Ubuntu 上に Redis の最新安定版を公式 APT リポジトリから導入し、コマンドライン(redis-cli)と Python から基本操作を行う手順を説明する。文字列型、リスト型、集合型の各操作を例示する。

目次

関連する外部ページ

Redis 公式ダウンロードページ:https://redis.io/downloads/
Redis 公式コマンドリファレンス:https://redis.io/commands

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

Redis 活用ガイド

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

4. Python による基本操作

Redis を操作する公式ライブラリ redis-py を導入する。

pip install -U --no-user redis

接続には redis.Redis クラスを使う。既定では取得結果がバイト列で返るため、文字列として扱うには decode_responses=True を指定する(一次情報:redis-py 公式(PyPI))。

  1. キーバリューストアの例
    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") )
    
  2. リスト操作の例
    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 ) )
    
  3. 集合操作の例
    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" ) )