配置儲存體¶
配置儲存體 Storage 是 FIRERPA 內建的鍵值儲存,具有持久性,即使 FIRERPA 或裝置重新啟動,您依然可以在下次啟動時讀取這些變數。此 Storage 可讓您在裝置中持久化儲存資訊以供不同的用戶端程序讀取,用以共享裝置設定如登入帳號或其他獨立資訊。您甚至可以在機器內儲存加密設定。
注意
取得 Storage¶
您可以透過以下程式碼,取得一個儲存體 Storage 物件,以便進行後續操作。
storage = d.stub("Storage")
清空 Storage¶
您可以透過以下程式碼,清空儲存體 Storage 中的所有資訊,包括容器,您可以簡單理解為 - 格式化 Storage。
storage.clear()
取得容器¶
您可以透過以下程式碼,取得一個鍵值儲存容器物件。儲存體是儲存體,容器是儲存體下的一個桶 (bucket),您後續的讀寫均是對這個桶進行操作。
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 表示永不過期,其他正整數則為該 key 的剩餘存活秒數。
container.ttl("key_name")
設定存留時間¶
您可以透過以下呼叫,設定鍵值的存留時間。例如,下方的呼叫方式,將會在設定鍵值的同時,使這個鍵值在 10 秒後自動被刪除。
container.setex("key_name", "value", 10)
或者,如果您之前已經設定過這個鍵,現在想為其設定存留時間,可以如下使用,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")