[PYTHON] Ich habe gxredis geschrieben, um redis-py sicher zu verwenden

Überblick

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

Design Konzept

Wie benutzt man

Definition von DAO

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")

DAO-Initialisierung

Ü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"})

DAO-Attribute

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'})

Grundlegende Verwendung

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

Komplementparameter

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'

Pipeline verwenden

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',]

Verwenden Sie JSON

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'}

MGET mit dem in SET oder LIST gespeicherten Schlüssel

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.

Zusammenfassung

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

Ich habe gxredis geschrieben, um redis-py sicher zu verwenden
Verwendung von Redispy-Wörterbüchern
Ich möchte ein Glas aus Python verwenden
Ich möchte Linux auf dem Mac verwenden
Ich möchte IPython Qt Console verwenden
Ich habe versucht, lightGBM, xg Boost mit Boruta zu verwenden
Ich habe matplotlib geschrieben
Geschrieben "Einführung in die Effektüberprüfung" in Python
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich möchte Ceres Solver aus Python verwenden
Ich möchte -inf nicht mit np.log verwenden
Ich habe ein Skript geschrieben, um ein WordPress-Plug-In hochzuladen
Ich möchte ip vrf mit SONiC verwenden
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
Ich möchte mich mit Backpropagation (tf.custom_gradient) (Tensorflow) selbst verwenden.
Ich wollte die Python-Bibliothek von MATLAB verwenden
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Ich möchte OpenJDK 11 mit Ubuntu Linux 18.04 LTS / 18.10 verwenden
Nach dem Update auf Catalina konnte ich Anaconda nicht verwenden ...
Ich möchte R-Datensatz mit Python verwenden
Ich habe dir geschrieben, dass du das Signal mit Go sehen sollst
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Wie benutzt man Seaboan?
Wie man Shogun benutzt
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
Ich fing an zu analysieren
Einfach zu bedienende Flasche
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von IPython
Verwendung von virtualenv
Ich habe versucht zu debuggen.
Wie benutzt man Matplotlib?
Wie benutzt man numpy?
Gründe für die Verwendung von log
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Einfach zu bedienendes SQLite3
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
Python-How zur Verwendung von Pyinstaller
Verwendung von OptParse
Verwendung von return
Wie man Imutils benutzt
Ich möchte das neueste gcc verwenden, auch wenn ich keine Sudo-Berechtigungen habe! !!
Ich habe schnell ein Programm geschrieben, um DI mit Python zu lernen
Ich möchte nur die SudachiPy-Normalisierungsverarbeitung verwenden