Almacenamiento de Configuración

El Almacenamiento de Configuración (Storage) es un almacenamiento de clave-valor integrado en FIRERPA con persistencia. Incluso si FIRERPA o el dispositivo se reinician, aún puede leer estas variables en el próximo inicio. Este Storage le permite almacenar información de forma persistente en el dispositivo para que la lean diferentes procesos de cliente, para compartir la configuración del dispositivo, como cuentas de inicio de sesión u otra información independiente. Incluso puede almacenar configuraciones cifradas dentro de la máquina.

Atención

La capacidad total del Storage integrado es de 128 MB. Por favor, no lo utilice para almacenar grandes cantidades de datos. No admite la enumeración de los nombres de contenedores o claves existentes en el almacenamiento. Debe conocer el nombre completo del contenedor y el nombre de la clave para poder leer un valor del contenedor; de lo contrario, nunca podrá leerlo.

Obtener el Storage

Puede obtener un objeto de almacenamiento (Storage) utilizando el siguiente código, lo que le permitirá realizar operaciones posteriores.

storage = d.stub("Storage")

Limpiar el Storage

Puede utilizar el siguiente código para borrar toda la información del almacenamiento (Storage), incluidos los contenedores. Puede entenderlo simplemente como formatear el Storage.

storage.clear()

Obtener un Contenedor

Puede obtener un objeto contenedor de clave-valor utilizando el siguiente código. El almacenamiento es el sistema principal, y un contenedor es un "bucket" dentro de él. Todas sus operaciones de lectura y escritura posteriores se realizarán en este contenedor.

container = storage.use("container_name")

Obtener un Contenedor Cifrado

Si necesita almacenar valores de forma segura, por ejemplo, cuando el dispositivo será utilizado por otras personas pero no desea que lean la configuración almacenada, puede utilizar un contenedor cifrado. A diferencia de obtener un contenedor simple, un contenedor cifrado almacenará sus claves y valores de forma encriptada. Otras personas necesitarán una contraseña u otra forma de verificación para leerlos correctamente.

Nuestra biblioteca viene con un encriptador/desencriptador FernetCryptor. También puede implementar su propio algoritmo de cifrado único siguiendo el ejemplo de FernetCryptor. Solo necesita implementar los métodos encrypt y decrypt.

from lamda.client import FernetCryptor
container = storage.use("container_name", cryptor=FernetCryptor,
                                          key="this_is_password")

Eliminar un Contenedor

Puede utilizar el siguiente código para eliminar todas las claves y valores almacenados en el contenedor llamado container_name. Esta operación es equivalente a eliminar el "bucket".

storage.remove("container_name")

Escribir Clave-Valor en un Contenedor

Puede utilizar la siguiente llamada de ejemplo para establecer el valor de key_name en "value". El valor puede ser cualquier variable serializable por msgpack.

container.set("key_name", [1, 2, 3])
container.set("key_name", {"john": "due"})
container.set("key_name", b"value")
container.set("key_name", "value")

Leer Clave-Valor de un Contenedor

Puede utilizar el siguiente método para obtener el valor de key_name. Si no existe, devolverá None.

container.get("key_name")

Obtener el Tiempo de Vida (TTL)

Puede obtener el tiempo de vida de key_name con la siguiente llamada. -2 indica que la clave no existe, -1 significa que nunca expira, y cualquier otro entero positivo representa los segundos restantes de vida de la clave.

container.ttl("key_name")

Establecer el Tiempo de Vida (TTL)

Puede establecer el tiempo de vida de una clave-valor con la siguiente llamada. Por ejemplo, la siguiente llamada establecerá la clave-valor y hará que se elimine automáticamente después de 10 segundos.

container.setex("key_name", "value", 10)

Alternativamente, si ya ha establecido esta clave y ahora desea establecer su tiempo de vida, puede usar el siguiente método. key_name se eliminará automáticamente después de 60 segundos.

container.expire("key_name", 60)

Escritura Condicional

Puede realizar la siguiente llamada para establecer la clave-valor solo si key_name no existe. Si ya existe, no se realizará ninguna operación.

container.setnx("key_name", "value")

Verificar Existencia

Puede usar la siguiente llamada para verificar si key_name existe en el contenedor.

container.exists("key_name")

Eliminar Clave-Valor de un Contenedor

Puede usar la siguiente llamada para eliminar key_name y su valor del contenedor.

container.delete("key_name")