Redis
 sql >> Database >  >> NoSQL >> Redis

Come archiviare un JSON annidato complesso in Redis usando Python

Non puoi farlo direttamente, ma fortunatamente c'è un nuovo modulo Redis chiamato RedisJSON che fa esattamente ciò di cui hai bisogno e ha anche un bel binding Python. Puoi avviare un contenitore mobile RedisJSON o utilizzare Redis 4.0+, quindi scaricare/compilare e installare RedisJSON e configurare Redis per caricarlo e aggiunge comandi nativi per la manipolazione JSON.

Ti consente di archiviare documenti JSON in Redis, quindi recuperare o modificare un elemento specifico nell'albero del documento, senza recuperare (o persino analizzare internamente) il documento. Il suo client Python ti consente persino di archiviare i dict python e di convertirli automaticamente in JSON.

Modulo ReJSON:http://redisjon.io

Client Python:https://pypi.python.org/pypi/rejson

Esempio:

from rejson import Client, Path

rj = Client(host='localhost', port=6379)

# Set the key `obj` to some object
obj = {
    'answer': 42,
    'arr': [None, True, 3.14],
    'truth': {
        'coord': 'out there'
    }
}
rj.jsonset('obj', Path.rootPath(), obj)

# Get something
print 'Is there anybody... {}?'.format(
    rj.jsonget('obj', Path('.truth.coord'))
)