键值存储¶
配置存储器 Storage 是 FIRERPA 内置的键值存储,具有持久性,即使 FIRERPA 或者设备重启,您依然可以在下次启动时读取这些变量。该 Storage 让您可以在设备中持久化存储信息以供不同的客户端进程读取,用以共享设备配置如登录账号或者其他独立信息。您甚至可以在机器内存储加密配置。
注意
内置 Storage 总容量为 128 MB,请勿用来存储大量数据,不支持列出存储器中的容器名或键名,您必须完整知道容器名称以及键的名称才能从容器中读取值,否则,将永远无法读取。
获取 Storage¶
首先获取一个存储器 Storage 对象,这样您才可以进行后续操作。
storage = d.stub("Storage")
清空 Storage¶
清空存储器 Storage 中的所有信息,包括容器,您可以简单理解为 —— 格式化 Storage。
storage.clear()
获取容器¶
获取一个键值存储容器对象,存储器是存储器,容器是存储器下的一个桶,您后续的读写均是对这个桶进行操作。
container = storage.use("container_name")
获取加密容器¶
如果还需要安全地存储值,比如,当该设备会被其他人使用时,而您不想存储的配置被其他人读取,您可以使用加密容器。它与简单的获取容器不同,加密容器将对您设置的键值进行加密存储,其他人需要密码或其他验证才能读取。
我们的库自带了一个 FernetCryptor 加解密器,您也可以按照 FernetCryptor 实现自己独特的加密算法,只需要您实现 encrypt 和 decrypt 方法即可。
from lamda.client import FernetCryptor
container = storage.use("container_name", cryptor=FernetCryptor,
key="this_is_password")
删除容器¶
清除名为 container_name 的容器中存储的所有键值,这一操作也相当于把桶删除。
storage.remove("container_name")
向容器写键值¶
设置 key_name 的值为 “value”,其中,值支持任何 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")
从容器读键值¶
获取 key_name 的值,如果键不存在,则返回 None。
container.get("key_name")
获取生存时间¶
获取 key_name 的生存时间,-2 为该键不存在,-1 为永不过期,其他正整数则为该键的剩余存活秒数。
container.ttl("key_name")
设置生存时间¶
设置键值的生存时间,比如下面的调用将会在设置键值的同时,使该键值在 10 秒后自动删除。
container.setex("key_name", "value", 10)
或者,如果您之前已经设置过这个键,现在想为其设置生存时间,可以使用 expire,60 秒后,key_name 将自动删除。
container.expire("key_name", 60)
条件写入¶
仅当 key_name 不存在时才会设置该键值,如果该键已存在,则不做任何操作。
container.setnx("key_name", "value")
判断是否存在¶
检查 key_name 是否存在于容器中。
container.exists("key_name")
从容器删键值¶
来从容器中删除 key_name 以及它的值。
container.delete("key_name")