Redisのインストール
WindowsやLinux環境のインストール手順はネット上に多数公開されています。環境に合わせて適切なガイドを参照してください。
redis-pyのインストール
pip install redis
Redisの可視化ツール
RedisDesktopManagerを使用できます。ダウンロード先: https://redisdesktop.com/download
APIの基本操作
redis-pyのAPIは主に以下のカテゴリに分類されます:
- 接続方法
- データ操作(String/Hash/List/Set/Sorted Set)
- パイプライン
- Publish-Subscribe
接続方法
接続クラスの選択
redis-pyではStrictRedisが公式コマンドをサポートし、Redisは後方互換性のために存在します。公式推奨はStrictRedisです。
<pre>import redis
conn = redis.StrictRedis(host='localhost', port=6379, db=0)
conn.set('user_profile', 'sample_data')
print(conn.get('user_profile'))</pre>
接続プールの利用
接続プールを介して複数のRedisインスタンスが同一接続を共有できます。
<pre>import redis
conn_pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
conn = redis.StrictRedis(connection_pool=conn_pool)
conn.set('user_id', '12345')
print(conn.get('user_id'))</pre>
実用的な応用例
キャッシュ管理
オブジェクトをシリアライズしてString型で保存します。注意点:
- キー名は重複しないようにし、短く(例:
user:1001) - シリアライズ方式は効率性とメモリ効率を考慮
- データベースとの整合性維持: 更新時/削除時にキャッシュを無効化
メッセージキュー
List型のlpushとrpopでメッセージを処理。順序保証と優先度対応にはSorted Setを利用。
タイムライン実装
最新投稿をlpushで追加し、lrangeで取得:
conn.lpush('timeline:feed', 'post_123')
リーダーボード
Sorted Setのzrevrangebyscoreでスコア順のリストを取得:
conn.zrevrangebyscore('leaderboard', '+inf', '-inf', withscores=True)
カウンター実装
日次登録数カウンター(String型):
conn.setex('daily_registrations', 86400, 0)
投稿のいいね数(Hash型):
conn.hincrby('post:789', 'likes', 1)
友達関係管理
互いにフォローしているユーザーを取得:
conn.sinter('user:123:follows', 'user:456:follows')
分散ロック
ロック取得例(1秒有効):
lock_result = conn.set('app_lock', 'locked', ex=1, nx=True)
ロック解放はconn.delete('app_lock')で行います。
倒置インデックス
都市名の部分一致検索用インデックス:
conn.sadd('index:beijing', '1001')
検索時はconn.smembers('index:be')でIDを取得