鍵值儲存¶
設定儲存器 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")