Je kunt dat niet direct doen, maar gelukkig is er een nieuwe Redis-module genaamd RedisJSON die precies doet wat je nodig hebt, en het heeft ook een mooie Python-binding. U kunt een RedisJSON-dockercontainer starten of Redis 4.0+ gebruiken, vervolgens RedisJSON downloaden/compileren en installeren en Redis configureren om deze te laden, en het voegt native commando's toe voor JSON-manipulatie.
Hiermee kunt u JSON-documenten opslaan in Redis en vervolgens een specifiek element in de documentboom ophalen of wijzigen, zonder het document op te halen (of zelfs intern te ontleden). Met de Python-client kun je zelfs python-dicts opslaan en deze automatisch naar JSON converteren.
ReJSON-module:http://redisjon.io
Python-client:https://pypi.python.org/pypi/rejson
Voorbeeld:
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'))
)