Redis のインストールと活用ガイド(Windows 上)
【概要】
Redis は本来 Linux 向けのソフトウェアであり、公式には Windows 版が提供されていない。Windows で使う場合は、Windows Subsystem for Linux(WSL)で Linux 版 Redis を動かすか、Redis 互換の Windows ネイティブ実装 Memurai(メムライ)を使うのが現実的である。本ページでは Memurai を用いる方法を中心に、コマンドラインと Python からの基本操作を説明する。
【目次】
【関連する外部ページ】
Memurai 公式:https://www.memurai.com/
Redis 公式コマンドリファレンス:https://redis.io/commands
【サイト内の関連ページ】
2. Redis 互換サーバの導入(Windows 上)
かつて公開されていた MicrosoftArchive の Redis(Redis-x64-3.x)は保守が終了した古い版であり、現在は推奨されない。現行では、Redis 互換の Windows ネイティブ実装である Memurai を用いるのが確実である(一次情報:Memurai 公式)。
- Memurai 公式サイト(https://www.memurai.com/get-memurai)からインストーラをダウンロードする。
- ダウンロードしたインストーラを実行し、ウィザードの指示に従って導入する。
- 導入後、Memurai は Windows サービスとして登録され、サービスとして起動する。サービスの稼働は「サービス」画面で確認できる。
Memurai は Redis 互換であり、クライアントツール名は
memurai-cli、サーバ実行ファイルは memurai.exe である。以降のコマンド例では redis-cli の代わりに memurai-cli を用いる(Redis のコマンド構文はそのまま使える)。
3. コマンドラインによる基本操作
コマンドラインクライアントは、インストール先フォルダの memurai-cli.exe を実行するか、コマンドプロンプトで次を実行する。
memurai-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 を導入する。管理者権限でコマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
pip install -U --no-user redis
接続には redis.Redis クラスを使う。既定では取得結果がバイト列で返るため、文字列として扱うには decode_responses=True を指定する(一次情報:redis-py 公式(PyPI))。Memurai は既定でポート 6379 で待ち受けるため、接続先は Linux 版 Redis と同じである。
キーバリューストアの例
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" ) )