ที่เก็บข้อมูลการกำหนดค่า¶
ที่เก็บข้อมูลการกำหนดค่า Storage เป็นที่เก็บข้อมูลแบบ key-value ที่มีในตัวของ FIRERPA ซึ่งมีความสามารถในการคงอยู่ถาวร (persistence) แม้ว่า FIRERPA หรืออุปกรณ์จะรีสตาร์ท คุณยังคงสามารถอ่านค่าตัวแปรเหล่านี้ได้ในการเปิดใช้งานครั้งถัดไป Storage นี้ช่วยให้คุณสามารถจัดเก็บข้อมูลอย่างถาวรในอุปกรณ์เพื่อให้โปรเซสของไคลเอ็นต์ต่างๆ สามารถอ่านได้ เพื่อใช้ในการแชร์การกำหนดค่าของอุปกรณ์ เช่น บัญชีล็อกอิน หรือข้อมูลอิสระอื่นๆ คุณยังสามารถจัดเก็บการกำหนดค่าที่เข้ารหัสไว้ในเครื่องได้อีกด้วย
ข้อควรสนใจ
การเข้าถึง Storage¶
คุณสามารถใชโค้ดต่อไปนี้เพื่อเข้าถึงอ็อบเจกต์ที่เก็บข้อมูล Storage เพื่อที่จะดำเนินการในขั้นตอนต่อไปได้
storage = d.stub("Storage")
การล้างข้อมูลใน Storage¶
คุณสามารถใช้โค้ดต่อไปนี้เพื่อล้างข้อมูลทั้งหมดในที่เก็บข้อมูล Storage รวมถึงคอนเทนเนอร์ทั้งหมด ซึ่งอาจเปรียบได้กับการฟอร์แมต Storage
storage.clear()
การเข้าถึงคอนเทนเนอร์¶
คุณสามารถใช้โค้ดต่อไปนี้เพื่อเข้าถึงอ็อบเจกต์คอนเทนเนอร์สำหรับเก็บข้อมูลแบบ key-value ที่เก็บข้อมูล (Storage) ก็คือที่เก็บข้อมูล ส่วนคอนเทนเนอร์ (container) ก็เปรียบเสมือนบัคเก็ต (bucket) ที่อยู่ภายใต้ที่เก็บข้อมูลนั้น การอ่านและเขียนข้อมูลของคุณในขั้นตอนต่อไปจะเป็นการดำเนินการกับบัคเก็ตนี้
container = storage.use("container_name")
การเข้าถึงคอนเทนเนอร์ที่เข้ารหัส¶
หากคุณต้องการจัดเก็บค่าอย่างปลอดภัย เช่น ในกรณีที่อุปกรณ์นี้จะถูกใช้งานโดยผู้อื่น แต่คุณไม่ต้องการให้การกำหนดค่าที่คุณเก็บไว้ถูกอ่านโดยผู้อื่น คุณสามารถใช้คอนเทนเนอร์ที่เข้ารหัสได้ ซึ่งแตกต่างจากการเข้าถึงคอนเทนเนอร์ทั่วไป คอนเทนเนอร์ที่เข้ารหัสจะทำการเข้ารหัส key-value ที่คุณตั้งค่าไว้ก่อนจัดเก็บ ผู้อื่นจะต้องใช้รหัสผ่านหรือการยืนยันตัวตนอื่น ๆ จึงจะสามารถอ่านข้อมูลได้อย่างถูกต้อง
ไลบรารีของเรามาพร้อมกับ FernetCryptor สำหรับการเข้ารหัสและถอดรหัส คุณยังสามารถสร้างอัลกอริทึมการเข้ารหัสเฉพาะของคุณเองตามแบบของ FernetCryptor ได้ เพียงแค่คุณต้อง implement เมธอด encrypt และ decrypt
from lamda.client import FernetCryptor
container = storage.use("container_name", cryptor=FernetCryptor,
key="this_is_password")
การลบคอนเทนเนอร์¶
คุณสามารถใช้โค้ดต่อไปนี้เพื่อล้าง key-value ทั้งหมดที่เก็บอยู่ในคอนเทนเนอร์ชื่อ container_name การดำเนินการนี้เทียบเท่ากับการลบบัคเก็ตทิ้ง
storage.remove("container_name")
การเขียน Key-Value ลงในคอนเทนเนอร์¶
คุณสามารถเรียกใช้ตัวอย่างต่อไปนี้เพื่อตั้งค่าของ key_name เป็น "value" โดยที่ค่า (value) สามารถเป็นตัวแปรชนิดใดก็ได้ที่สามารถ serialize ด้วย 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-Value จากคอนเทนเนอร์¶
คุณสามารถใช้วิธีต่อไปนี้เพื่อดึงค่าของ key_name หากไม่มีอยู่ จะคืนค่า None
container.get("key_name")
การรับเวลาคงอยู่ (TTL)¶
คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อรับเวลาคงอยู่ (TTL) ของ key_name โดยที่ -2 หมายถึงคีย์ไม่มีอยู่, -1 หมายถึงไม่มีวันหมดอายุ, และจำนวนเต็มบวกอื่น ๆ คือจำนวนวินาทีที่เหลืออยู่ของคีย์นั้น
container.ttl("key_name")
การตั้งค่าเวลาคงอยู่ (TTL)¶
คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อตั้งค่าเวลาคงอยู่ของ key-value ตัวอย่างเช่น การเรียกใช้ด้านล่างนี้จะตั้งค่า key-value พร้อมกับทำให้ key-value นี้ถูกลบโดยอัตโนมัติหลังจากผ่านไป 10 วินาที
container.setex("key_name", "value", 10)
หรือหากคุณได้ตั้งค่าคีย์นี้ไว้ก่อนแล้ว และตอนนี้ต้องการตั้งเวลาคงอยู่ให้มัน คุณสามารถใช้คำสั่งด้านล่างนี้ได้ หลังจาก 60 วินาที key_name จะถูกลบโดยอัตโนมัติ
container.expire("key_name", 60)
การเขียนตามเงื่อนไข¶
คุณสามารถเรียกใช้คำสั่งด้านล่างนี้ ซึ่งจะทำการตั้งค่า key-value ก็ต่อเมื่อ key_name ยังไม่มีอยู่เท่านั้น หากมีอยู่แล้ว จะไม่มีการดำเนินการใด ๆ
container.setnx("key_name", "value")
การตรวจสอบว่ามีอยู่หรือไม่¶
คุณสามารถเรียกใช้คำสั่งด้านล่างนี้เพื่อตรวจสอบว่า key_name มีอยู่ในคอนเทนเนอร์หรือไม่
container.exists("key_name")
การลบ Key-Value ออกจากคอนเทนเนอร์¶
คุณสามารถเรียกใช้คำสั่งด้านล่างนี้เพื่อลบ key_name และค่าของมันออกจากคอนเทนเนอร์
container.delete("key_name")