5
4

More than 5 years have passed since last update.

redis-pyを使ったzaddコマンドの引数について (v3.2.0)

Posted at

はじめに

インメモリKVS型DBのRedisをPythonから呼び出す方法として、redis-pyモジュールを使うやり方があります。
このredis-pyにZADDと呼ばれるデータを格納するコマンドがあります。
このZADDの引数に変更があり、古い記事の呼び出し方ではエラーを吐くので、新しい呼び出し方を共有します。

Version

Redis本体は5.0.3, redis-pyはv3.2.0を想定

 Redis 5.0.3 (00000000/0) 64 bit
tikeda:Redis tikeda$ pip show redis
Name: redis
Version: 3.2.0
Summary: Python client for Redis key-value store
Home-page: https://github.com/andymccurdy/redis-py
Author: Andy McCurdy
Author-email: sedrik@gmail.com
License: MIT
Location: /usr/local/var/pyenv/versions/3.7.0/lib/python3.7/site-packages
Requires: 
Required-by: 

ZADDとは

SortedSet型でデータを格納するコマンドです。
SortedSet型は、その名の通り順序付けされた集合の型です。
各データがscoreと呼ばれる値を持っており、それを基にソートされます。

参考: http://redis.shibu.jp/commandreference/sortedsets.html

呼び出し方

これまではzadd(key, score, value)やzadd(key, value, score)といった形でコマンドを叩いていましたが、現バージョンからは以下のようになりました。

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

dict = {}
dict['value'] = 10
r.zadd('aaa', dict)

print(r.zrangebyscore('aaa', '-inf', '+inf'))

ここではZRANGEBYSCOREコマンドを用いて確認しています。

辞書型になったので、まとめてvalueを与えることも可能です。

dict = {}
dict['value'] = 10
dict['has'] = 11
dict['to'] = 12
dict['be'] = 13
dict['set'] = 14
dict['here'] = 15
r.zadd('bbb', dict)

終わりに

redis-pyですが、いつからかZADDコマンドの引数順序(latitudeとlongitudeの順序)が変わっていたりと 闇深な カオスな印象をうけますね

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4