はじめに
こんにちは、京セラコミュニケーションシステム林(@kccs_koki-hayashi)と申します。
私が5か月前に業務でぶつかった問題に対する解決策を、備忘録がてら本記事で共有いたします。同様の問題でお困りの方のお役に立てれば幸いです。
実際に困っていたこと
PythonでRedisへのデータ登録作業を行うにあたって、事前に工数見積もり調査を行う必要がありました。しかし、登録方法を手軽に理解できる記事が見当たらず、私自身未経験の作業だったということもあり、タスクの難易度をはかることができず、困りはてておりました。
この記事の目的
本記事ではかつての私のようにRedisに苦戦しておられる読者の方々に向けて、Redisへのデータ登録の方法をできるだけわかりやすく説明いたします。
本記事を読んでいただければ、 最短5分間でRedisへのデータ登録を理解することが可能です!
それではやっていきましょう!
本記事の対象者
- macOSの方
- Pythonについてある程度知識・経験がある方
- 実際に手を動かしてPythonからRedisへのデータ登録を体験したい方
前提条件
- pip3がインストールされていること
- Homebrewがインストールされていること
今回の開発環境
pip 23.2.1
Homebrew 4.1.25
python 3.9.6
ここから、5分でPythonからRedisへのデータ登録が体験できます。
事前準備
ターミナルを開く
ターミナルを3つ開きます。
私はターミナルをVisual Studio Codeで以下のように開きました。
1つ目のターミナル(ターミナル1)
Pythonライブラリのインストール、ローカルへのRedisインストール、およびPythonの実行に使います。
2つ目のターミナル(ターミナル2)
Redisの起動に使います。
3つ目のターミナル(ターミナル3)
Redisに登録したデータの確認に使います。
Python用のライブラリをインストール
PythonからRedisを使うために、Redis-pyをpip3 install
コマンドでインストールします。
% pip3 install redis
Redisをローカルにインストール
brew install
コマンドでRedisをローカルにインストールします。
% brew install redis
Redisを起動
redis-server
コマンドを実行します。
指定されたポート(デフォルトでは6379)でRedis接続の受け付けを行います。
% redis-server
Redisに接続
今回は下記の情報でRedisに接続します。
名前 | 値 | 備考 |
---|---|---|
ホスト | 127.0.0.1 | ローカルにRedisをインストールしたため |
ポート | 6379 | デフォルトの設定 |
DB | 1 | 0から15の間で設定(デフォルトは0) |
redis-cli -h[IPアドレス]-p[ポート番号]-n[db番号]
に当てはめて接続を行います。
文字化け
中身のデータが文字化けしている場合
-- rawを付け足して確認してみてください。
redis-cli -h[IPアドレス]-p[ポート番号]-n[db番号]--raw
% redis-cli -h 127.0.0.1 -p 6379 -n 1 --raw
Redisの中にデータが入っていないことを確認します。
127.0.0.1:6379[1]> keys *
PythonからRedisへのデータ登録
sample_redis.py
のファイルを作成します。
以下のコードでRedisへのデータ登録を行います。
Redisに接続
redis.Redis(host,port,db)
でRedisに接続します。
必要な情報は事前準備の「Redisに接続」に記しています。
import redis
# redisに接続する
r = redis.Redis(host='127.0.0.1', port=6379, db=1)
Redisに登録
hmset(key,field)
でRedisにデータを登録します。
下記のコードをsample_redis.py
に追加します。
input_data = [('りんご', '120円', '青森', '10度'),('オレンジ', '50円', '愛媛', '8度')]
def convert_data(input_data):
datas = {}
for r in input_data:
d = {}
d["果物"] = r[0]
d["値段"] = r[1]
d["生産地"] = r[2]
d["糖度"] = r[3]
datas[r[0]] = d
return datas
hash_data = convert_data(input_data)
# hash_dataの中身
# {'りんご': {'果物': 'りんご', '値段': '120円', '生産地': '青森', '糖度': '10度'}, 'オレンジ': {'果物': 'オレンジ', '値段': '50円', '生産地': '愛媛', '糖度': '8度'}}
# データ登録
for k, v in hash_data.items():
r.hmset(k, v)
sample_redis.py
書いたコードを実行します。
% python3 sample_redis.py
登録したデータの確認
登録されているキーを確認します。
127.0.0.1:6379[1]> keys *
りんご
オレンジ
りんごとオレンジのキーが登録されていることがわかりました。
次に登録されているキーのうち、りんごのデータをすべて確認します。
127.0.0.1:6379[1]> hgetall りんご
果物
りんご
値段
120円
生産地
青森
糖度
10度
キー(りんご)に紐づく値をすべて出力できました。
以上で、本記事の目的であるPythonからRedisへのデータ登録を行うことができました。
次に、Redisに登録したデータの消去とRedisの停止を行います。
そのままでも、データは大丈夫だよという方は、Redisの停止のみを行ってください。
Redisからデータを削除
ここでは、特定のキーを指定してデータを削除する方法と、すべてのデータを一括で削除する方法、これら2つを紹介します。
特定のキーを指定したデータ削除
delete(key)
でキーを指定してRedisからデータを削除します。
下記のコードをsample_redis.py
に追加します。
# データ削除
r.delete('りんご')
sample_redis.py
のコードを実行します。
% python3 sample_redis.py
登録されているキーを確認します。
127.0.0.1:6379[1]> keys *
オレンジ
りんごのキーが削除されていることが確認できました。
すべてのデータを一括削除
flushdb()
で接続時に選択したRedisのdbのデータをすべて削除します。
下記のコードをsample_redis.py
に追加します。
# 一括削除
r.flushdb()
sample_redis.py
のコードを実行します。
% python3 sample_redis.py
登録されているキーを確認します。
127.0.0.1:6379[1]> keys *
登録されているデータがすべて削除されたことが確認できました。
Redisの停止
shutdownでRedisを停止します。
127.0.0.1:6379[1]> shutdown
not connected>
まとめ
今回はPythonを使ったRedisへのデータ登録を体験していただきました。
思ったより簡単だな、と思っていただけたのではないでしょうか。
皆さんは何分で理解できましたか?
もしよければコメントで教えてください。
終わりに
次回は「5分でわかるGoogle CloudのMemorystore for Redisへのデータ登録」を作成予定です。
続編もお楽しみに!!
宣伝
弊社のXでは、Qiita投稿に関する情報や各種セミナー情報をお届けしております!
情報収集や学びの場を求める方々にぜひフォローしていただき、最新情報を手に入れてください!