code & booze

自己学習とは無縁なSIer業界に身を置くエンジニアがアウトプットします

PythonでRedisに接続する方法

PythonでRedisに接続する手順メモ。

Redis ... Blazing fast!!

Redis、使ってますか?
Redisは高速に動作するインメモリーデータベースで、キーバリュー型のNoSQLのひとつです。

前回の記事で書いたMongoDBも高速に動作するDBですがRedisのパフォーマンスには到底勝てません。インメモリーなので当然ですが非常に高速に動作します。
そのパフォーマンスからキャッシュやリアルタイムで反映されるランキング等の用途に使われたりします。

kiy-s.hateblo.jp

今回はPythonからRedisに接続する手順を記載します。

Redis on Docker

前回のMongoDBに続いてですが、、今回もDockerで用意したいと思います。
(今どきはちょっと試すぐらいでいちいちインストールなんてしてられませんね!)

version: "3.5"
services:
  redis:
    image: redis:latest
    ports:
      - "6379:6379"
  redisCommander:
    image: rediscommander/redis-commander
    environment:
      - REDIS_HOSTS=local:redis:6379
    ports:
      - "8081:8081"
    depends_on:
      - redis

redisCommanderというNode.js製のRedis管理ツールも起動させます。

起動コマンドはdocker-compose.yamlがあるディレクトリで↓↓

$ docker-compose up -d

Pythonで接続

redisのインストール

ここでインストールするのはredis本体のことではなく、PythonでRedisを操作するライブラリの方です。

$ pipenv install redis

Pythonコード

Redisに接続してデータを1件登録するコードを書いてみます。

from redis import Redis
# 接続
r = Redis(host="192.168.99.100", port=6379, db=0)
r.set("test-key", "テストバリュー")

接続から登録(set)の単純なコードになります。例によってDocker Desktopを使っている場合はhostにlocalhostを指定してください。

redisはデフォルトで0~15までの16個のDBを持っており、上記の例では接続時に1番目(インデックス0)のDBを指定して接続しています。インデックスを変更することにより異なるDBに接続することが可能です。

実行コマンドは↓

py redis_test.py

redis-commanderで確認

<docker-machinのIP>:8081 or localhost:8081にアクセスして確認してみます。

f:id:kiy-s:20190415000117p:plain

docker-composeで起動していればlocalのredisには接続されているはずです。redis_test.py実行後、左上のRefreshで更新するとr.setで登録したデータが表示されると思います。

これで接続から登録までを確認することが出来ました!

setコマンドだけだとあまり活かせないかもしれないですが、他にも色々便利なコマンドがあるので使ってみると良いと思います↓↓

redis-py.readthedocs.io

ちなみにこのredis-commanderですが画面下部でコマンド入力可能となっておりそれなりに便利です。コマンド履歴も残ります。

(画像はDBを切り替えたところ) f:id:kiy-s:20190415000858p:plain

また左上の"More..." ⇒ "Add Server"で追加のredisサーバーも接続できるので、例えばherokuのredis add-onで作成したredisにも接続可能です。 herokuはMongoDBのデータはブラウザで確認できるのですがredisは確認できないのでredis-commander単体でも結構使えます。

おわりに

何でもかんでもredisにつっこむということは現実的ではないですが、こういったものを適切に使っていくことが大事ですね~

もっと便利で直接的に役に立つコマンドがあるのでそれはまた別の記事にしたいと思います。