redis-py¶
Python から Redis サーバーにアクセスするには、Python 用の Redis クライアント「redis-py」を利用するのが便利です。 redis-py は PyPI の pip install コマンドで簡単にインストールすることができます。
$ pip install redis
Redis で扱える型¶
さっそく Python から Redis を操作する基本的な方法についてみていこうと思いますが、Redis を利用するにあたり一番重要な点は「型」です。 Redis で扱える値の型は、次のようなものがあります。
型名 | 説明 |
---|---|
文字列型 | 文字を値として保存できます。 |
リスト型 | 複数の値をリストとして保存できます。 |
ハッシュ型 | 文字列をキーとして、値を保存できます。 |
セット型 | 保存する値が重複しない集合として値を保存できます。 |
Redisサーバーへの接続¶
何はともあれ、Python から Redis サーバーへ接続しないと始まりません。 redis-py は redis という名前のパッケージを import することで利用できるようになります。 そして redis.Redis() 関数で Redis サーバーへ接続できます。
import redis
# Redis に接続します
# Redisサーバーのホスト名, ポート番号, データベース番号 を指定します
redis = redis.Redis(host='localhost', port=6379, db=0)
文字列型データの追加・取得・削除¶
まずは文字列型データの操作について、基本操作を示します。 Redis クラスの以下の関数を利用してみます。
関数 | 概要 |
---|---|
get() | 指定したキーの値を取得します。 |
delete() | 指定したキーの値を削除します。 |
set() | 値を追加します。 |
import redis
# Redis に接続します
r = redis.Redis(host='localhost', port=6379, db=0)
# 'hoge' というキーで 'moge' という値を追加します
r.set('hoge', 'moge')
# 追加した値を取得して表示します
hoge = r.get('hoge')
print(hoge.decode())
# 追加した値を削除します
result = r.delete('hoge')
リスト型データの追加・取得・削除¶
続いてリスト型を扱ってみましょう。 ここでは、以下の関数を利用してみましょう。
関数 | 説明 |
---|---|
lpop() | リストの先頭から値を取り出します。 |
rpop() | リストの末尾から値を取り出します。 |
lpush() | リストの先頭に値を追加します。 |
rpush() | リストの末尾に値を追加します。 |
import redis
# Redis に接続します
r = redis.Redis(host='localhost', port=6379, db=0)
# リストの末尾に値を追加します
r.rpush('name', 'Tom')
r.rpush('name', 'Alex')
# リストの先頭に値を追加します
r.lpush('name', 'Taro')
# リストの先頭から値を取り出します (取得した上で削除されます)
name = r.lpop('name')
print(name)
# リストの末尾から値を取り出します (取得した上で削除されます)
name = r.rpop('name')
print(name)
result = r.delete('name')
ハッシュ型データの追加・取得・削除¶
次にハッシュです。 ここでは次の関数を利用してみたいと思います。
関数 | 説明 |
---|---|
hdel() | ハッシュから値を削除します。 |
hget() | ハッシュから値を取得します。 |
hgetall() | ハッシュを取得します。 |
hset() | ハッシュに値を追加します。 |
import redis
# Redis に接続します
r = redis.Redis(host='localhost', port=6379, db=0)
# ハッシュを追加します
r.hset('man1', 'name', 'Taro')
r.hset('man1', 'country', 'Japan')
# 追加したハッシュを取得して表示します
name = r.hget('man1', 'name')
country = r.hget('man1', 'country')
print(name.decode())
# ハッシュを取得します
man1 = r.hgetall('man1')
print(man1['name'.encode()].decode())
# ハッシュの特定のキーを削除します
result = r.hdel('man1', 'country')
# ハッシュを削除します
result = r.delete('man1')
セット型データの追加・取得・削除¶
続いてセット型についても基本操作を示します。 利用するのは次の関数です。
関数 | 説明 |
---|---|
sadd() | セットに値を追加します。 |
smembers() | セットを取得します。 |
srem() | セットから値を削除します。 |
import redis
# Redis に接続します
r = redis.Redis(host='localhost', port=6379, db=0)
# セットを追加します
# 'name' というキーで、'Tom' と 'Mike' の値を追加します
r.sadd('name', 'Tom', 'Mike')
# セットに更に値を追加します
# セット型のため、Alex だけが追加されます
r.sadd('name', 'Alex', 'Tom')
# セットから値を削除します
r.srem('name', 'Tom')
# セットを取得します (集合型で返却されます)
name = r.smembers('name')
print(name)
# セットを削除します
result = r.delete('name')
おわりに¶
本稿では Python から redis-py を利用して Redis を操作する基本動作について解説しました。 Python から Redis をするキッカケになれば幸いです。