[PYTHON] J'ai écrit gxredis pour utiliser redis-py en toute sécurité

Aperçu

python a une bibliothèque redis pratique appelée redis-py, mais elle était difficile à utiliser en toute sécurité, donc c'est simple et intuitif. J'ai écrit une bibliothèque de wrapper.

Comment installer

$ pip install gxredis

Concept design

--Ne forcez pas les spécifications Active Record, mais profitez des caractéristiques de redis. —— Rendre la configuration moins susceptible d'entraîner des opérations erronées --Utilisez la méthode fournie par redis-py telle quelle

Comment utiliser

Définition de DAO

Pour DAO, spécifiez le format et le type de clé.

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

Initialisation DAO

Passez le redis-py StrictRedis comme premier argument. Dans le deuxième argument, transmettez les paramètres pour configurer la clé. Il vous suffit de transmettre les paramètres qui sont fixés au moment de la génération DAO, car vous pourrez renseigner les paramètres manquants ultérieurement.

client = redis.StrictRedis("localhost", 6379, 15)
dao = ItemDao(client, key_params={"device_id": "GX123"})

Attributs DAO

L'attribut DAO est un accesseur pour accéder à 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'})

Utilisation de base

Vous pouvez effectuer des opérations sur l'accesseur qui correspondent au type. Puisque la clé correspondant à l'accesseur est utilisée, spécifiez le deuxième argument et les suivants de la commande redis.

>>> dao.item_list.lpush("a")
>>> dao.item_list.lpush("b")
>>> dao.item_list.lpush("c")
>>> dao.item_list.lrange(0, 3)
['c', 'b', 'a']

Si vous ne fournissez pas suffisamment de paramètres pour la clé, vous obtiendrez une exception.

>>> dao.item.get()
...
AttributeError: Not enough keys are provided for redis operation

Paramètres complémentaires

En passant des paramètres supplémentaires à l'accesseur et en l'exécutant, vous obtiendrez un nouvel accesseur avec des paramètres complétés.

>>> dao.item(item_id=1)
RedisString(key="device:{device_id}:item:{item_id}", key_params={'item_id': 1, 'device_id': 'GX123'})

Vous pouvez émettre la commande redis vers l'accesseur nouvellement généré.

>>> accr = dao.item(item_id=1)
>>> accr.set("abc")
>>> accr.get()
'abc'

Utiliser le pipeline

Un pipeline est également disponible.

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

Utilisez JSON

Certaines fonctions pratiques sont fournies pour l'entrée / la sortie avec JSON.

>>> dao.item(item_id=1).set_json({'hello': 'world'})
>>> dao.item(item_id=1).get_json()
{u'hello': u'world'}

MGET avec la clé stockée dans SET ou LIST

Cela a également une méthode pratique.

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

Vous pouvez également utiliser smembers_mget et members_mget_json.

Résumé

Implémentation d'une bibliothèque légère pour une utilisation en toute sécurité de redis-py. Le nombre de lignes de code est court, veuillez donc le lire si vous le souhaitez.

Nous prévoyons d'ajouter des fonctions de validation clés à l'avenir.

~~ Oh, je dois m'inscrire auprès de pypi avant cela. ~~

Inscription PyPi terminée!

Recommended Posts

J'ai écrit gxredis pour utiliser redis-py en toute sécurité
Comment utiliser les dictionnaires redis-py
Je veux utiliser jar de python
Je veux utiliser Linux sur mac
Je souhaite utiliser la console IPython Qt
J'ai essayé d'utiliser lightGBM, xg boost avec Boruta
J'ai écrit matplotlib
J'ai écrit "Introduction à la vérification des effets" en Python
Je souhaite utiliser le répertoire temporaire avec Python2
Je veux utiliser le solveur ceres de python
Je ne veux pas utiliser -inf avec np.log
J'ai écrit un script pour télécharger un plug-in WordPress
Je souhaite utiliser ip vrf avec SONiC
J'ai essayé de résumer comment utiliser matplotlib de python
Je veux utiliser self avec Backpropagation (tf.custom_gradient) (tensorflow)
Je voulais utiliser la bibliothèque Python de MATLAB
J'ai essayé de résumer comment utiliser les pandas de python
Je souhaite utiliser OpenJDK 11 avec Ubuntu Linux 18.04 LTS / 18.10
Après la mise à jour vers Catalina, je ne pouvais pas utiliser anaconda ...
Je veux utiliser le jeu de données R avec python
Je t'ai écrit pour regarder le signal avec Go
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
J'ai commencé à analyser
Flacon facile à utiliser
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser IPython
Comment utiliser virtualenv
J'ai essayé de déboguer.
Comment utiliser Matplotlib
Comment utiliser numpy
Raisons d'utiliser le journal
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Facile à utiliser SQLite3
Comment utiliser la liste []
Comment utiliser python-kabusapi
Python-Comment utiliser pyinstaller
Comment utiliser OptParse
Comment utiliser le retour
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
Je veux utiliser la dernière version de gcc même si je n'ai pas les privilèges sudo! !!
J'ai écrit rapidement un programme pour étudier la DI avec Python ①
Je souhaite utiliser uniquement le traitement de normalisation SudachiPy