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