Python hat eine praktische Redis-Bibliothek namens redis-py, die jedoch schwierig zu verwenden war, daher einfach und intuitiv. Ich habe eine Wrapper-Bibliothek geschrieben.
Wie installiert man
$ pip install gxredis
Geben Sie für DAO das Format und den Schlüsseltyp an.
import redis
from gxredis import *
class ItemDao(RedisDao):
item = RedisString("device:{device_id}:item:{item_id}")
item_list = RedisList("device:{device_id}:list")
item_set = RedisSet("device:{device_id}:set")
item_hash = RedisHash("device:{device_id}:hash")
item_zset = RedisSortedSet("device:{device_id}:zset")
Übergeben Sie das redis-py StrictRedis
als erstes Argument. Übergeben Sie im zweiten Argument die Parameter, um den Schlüssel zu konfigurieren. Sie müssen nur die Parameter übergeben, die zum Zeitpunkt der DAO-Generierung festgelegt wurden, da Sie die fehlenden Parameter später eingeben können.
client = redis.StrictRedis("localhost", 6379, 15)
dao = ItemDao(client, key_params={"device_id": "GX123"})
Das DAO-Attribut ist ein Accessor für den Zugriff auf Redis.
>>> dao.item
RedisString(key="device:{device_id}:item:{item_id}", key_params={'device_id': 'GX123'})
>>> dao.item_list
RedisList(key="device:{device_id}:list", key_params={'device_id': 'GX123'})
Sie können Operationen am Accessor ausführen, die dem Typ entsprechen. Da der dem Accessor entsprechende Schlüssel verwendet wird, geben Sie das zweite und die nachfolgenden Argumente des Befehls redis an.
>>> dao.item_list.lpush("a")
>>> dao.item_list.lpush("b")
>>> dao.item_list.lpush("c")
>>> dao.item_list.lrange(0, 3)
['c', 'b', 'a']
Wenn Sie nicht genügend Parameter für den Schlüssel angeben, wird eine Ausnahme angezeigt.
>>> dao.item.get()
...
AttributeError: Not enough keys are provided for redis operation
Wenn Sie zusätzliche Parameter an den Accessor übergeben und ausführen, erhalten Sie einen neuen Accessor mit ergänzten Parametern.
>>> dao.item(item_id=1)
RedisString(key="device:{device_id}:item:{item_id}", key_params={'item_id': 1, 'device_id': 'GX123'})
Sie können den Befehl redis an den neu generierten Accessor senden.
>>> accr = dao.item(item_id=1)
>>> accr.set("abc")
>>> accr.get()
'abc'
Eine Pipeline ist ebenfalls verfügbar.
>>> pipe = dao.pipeline()
>>> accr1 = pipe.item(item_id=1) # accessor for item01
>>> accr2 = pipe.item(item_id=2) # accessor for item02
>>> accr1.set("item01")
>>> accr2.set("item02")
>>> pipe.item_list.rpush(accr1.key)
>>> pipe.item_list.rpush(accr2.key)
>>> pipe.execute()
>>> dao.item_list.lrange(0, 100)
['device:GX123:item:1', 'device:GX123:item:2',]
Für die Eingabe / Ausgabe mit JSON stehen einige praktische Funktionen zur Verfügung.
>>> dao.item(item_id=1).set_json({'hello': 'world'})
>>> dao.item(item_id=1).get_json()
{u'hello': u'world'}
Dies hat auch eine bequeme Methode.
>>> dao.item_list.lrange_mget(0, 100)
({'device:GX123:item:1', 'device:GX123:item:2'}, ['{"hello": "world"}', 'item02'])
>>> dao.item_set.smembers_mget_json(0, 0)
(['device:GX123:item:1'], [{u'hello': u'world'}])
Sie können auch smembers_mget
und members_mget_json
verwenden.
Implementierung einer Light-Wrapper-Bibliothek zur sicheren Verwendung von Redis-Py. Die Anzahl der Codezeilen ist kurz. Bitte lesen Sie sie, wenn Sie möchten.
Wir planen, in Zukunft wichtige Validierungsfunktionen hinzuzufügen.
~~ Oh, ich muss mich vorher bei pypi anmelden. ~~
PyPi-Registrierung abgeschlossen!
Recommended Posts