2011年6月16日木曜日

redis-pyで複数のSorted Setの積集合を返す

redis-pyで複数のSorted Setの積集合を返すには、以下のコードのようにzinterstoreを使用します。

# coding=UTF-8
import redis

rc = redis.Redis(host='localhost', port=6379, db=1)
rc.delete('ss1')
# Sorted Setに値を追加
rc.zadd('ss1', '商品1', 100)
rc.zadd('ss1', '商品2', 200)
rc.zadd('ss1', '商品3', 300)
rc.zadd('ss2', '商品2', 1000)
rc.zadd('ss2', '商品3', 100)
# 複数のSorted Setの積集合を返す
# スコアはSUMされる
rc.zinterstore('rs', ['ss1', 'ss2'])
for value in rc.zrange('rs', 0, -1):
 print(value)

補足
ubuntuで以下のコマンドでredisとredis-pyのインストールができます。
sudo apt-get install redis-server
sudo apt-get install python-redis

動作環境
Python 2.6.6, redis-py (2.0.0-1)

0 件のコメント:

コメントを投稿