fskv_test.lua 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. --[[
  2. @module fskv_test
  3. @summary fskv_test测试功能模块
  4. @version 1.0
  5. @date 2025.11.14
  6. @author 马亚丹
  7. @usage
  8. 本demo演示的功能为:使用Air8000核心板演示fskv核心库API的用法,演示设置kv数据、设置 table 内的键值对数据,用kv迭代器遍历kv数据,删除kv数据等操作。
  9. 运行核心逻辑:
  10. 1.初始化fskv
  11. 2.获取 kv 数据库状态
  12. 3.设置不同类型的kv数据
  13. 4.设置 table 内的键值对数据
  14. 5.根据 key 获取对应的数据
  15. 6.使用kv迭代器遍历kv数据
  16. 7.删除kv数据,清空KV数据
  17. ]]
  18. --1.定义功能函数:置kv 数据
  19. local function setKV()
  20. --如下所示设置用户数据是字符串
  21. local r1 = fskv.set("my_str", "goodgoodstudy")
  22. log.info("fskv设置用户数据是字符串", r1)
  23. --如下所示设置用户数据是布尔值
  24. local r2 = fskv.set("my_bool", true)
  25. log.info("fskv设置用户数据是布尔值", r2)
  26. --如下所示设置用户数据是数值
  27. local r3 = fskv.set("my_number", 1.23)
  28. log.info("fskv设置用户数据是数值", r3)
  29. --如下所示设置用户数据是整数
  30. local r4 = fskv.set("my_int", 5)
  31. log.info("fskv设置用户数据是整数", r4)
  32. --如下所示设置用户数据是table
  33. local r5 = fskv.set("my_table", { name = "wendal", age = 18 })
  34. log.info("fskv用户数据是table类型", r5)
  35. return true
  36. end
  37. --2.定义功能函数:设置 table 内的键值对数据
  38. local function setttable()
  39. --如下所示设置用户数据是字符串
  40. local r1=fskv.sett("mytable", "wendal", "goodgoodstudy")
  41. log.info("mytable设置用户数据是字符串", r1)
  42. --如下所示设置用户数据是布尔值
  43. local r2=fskv.sett("mytable", "upgrade", true)
  44. log.info("mytable设置用户数据是布尔值", r2)
  45. --如下所示设置用户数据是数值
  46. local r3=fskv.sett("mytable", "timer", 1)
  47. log.info("mytable设置用户数据是数值", r3)
  48. --如下所示设置用户数据是table
  49. local r4=fskv.sett("mytable", "bigd", { name = "wendal", age = 123 })
  50. log.info("mytable设置用户数据是table", r4)
  51. return true
  52. end
  53. --3.定义功能函数:获取kv数据
  54. local function getKV()
  55. local my_str = fskv.get("my_str")
  56. log.info("获取my_str的类型和值", type(my_str), my_str)
  57. local my_bool = fskv.get("my_bool")
  58. log.info("获取upgrade的类型和值", type(my_bool), my_bool)
  59. local my_number = fskv.get("my_number")
  60. log.info("获取my_number的类型和值", type(my_number), my_number)
  61. local my_int = fskv.get("my_int")
  62. log.info("获取my_int的类型和值", type(my_int), my_int)
  63. local my_table = fskv.get("my_table")
  64. log.info("获取my_table的类型和值", my_table,json.encode(my_table))
  65. local mytable = fskv.get("mytable")
  66. log.info("获取mytable的类型和值", mytable, json.encode(mytable))
  67. return true
  68. end
  69. --4.定义功能函数:kv数据库迭代器遍历KV数据
  70. local function iterKV()
  71. local iter = fskv.iter()
  72. log.info("kv数据库迭代器", iter)
  73. if iter then
  74. while 1 do
  75. local k = fskv.next(iter)
  76. log.info("kv迭代器获取下一个key", k)
  77. if not k then
  78. log.info("kv数据库遍历完成")
  79. break
  80. end
  81. log.info("fskv", k, "value", fskv.get(k))
  82. end
  83. end
  84. return true
  85. end
  86. --====功能演示主函数====
  87. local function fskv_test()
  88. -- 初始化kv数据库
  89. local r = fskv.init()
  90. log.info("fskv", "init complete", r)
  91. --获取 kv 数据库状态
  92. local used, total, kv_count = fskv.status()
  93. log.info("获取kv数据库状态", "fskv", "kv", used, total, kv_count)
  94. --=======设置kv 数据=======
  95. if not setKV() then
  96. log.info("设置kv数据失败")
  97. end
  98. --=======设置 table 内的键值对数据=======
  99. if not setttable() then
  100. log.info("设置 table 内的键值对数据失败")
  101. end
  102. --======根据 key 获取对应的数据====
  103. if not getKV() then
  104. log.info("获取kv数据失败")
  105. end
  106. --======使用kv数据库迭代器遍历KV数据====
  107. if not iterKV() then
  108. log.info("遍历kv数据失败")
  109. end
  110. -- 删除测试
  111. local d = fskv.del("my_bool")
  112. log.info("fskv", "my_bool删除结果", d)
  113. local t = fskv.get("my_bool")
  114. log.info("fskv", "删除后查询my_bool", type(t), t)
  115. -- 如果设置table的value为nil, 代表删除对应的skey
  116. -- 如下写法是删除name
  117. log.info("设置新的table,key是mytable2", fskv.set("mytable2", { age = 18, name = "wendal" }))
  118. log.info("mytable2的值", fskv.get("mytable2"),json.encode(fskv.get("mytable2")))
  119. log.info("mytable2删除name测试", fskv.sett("mytable2", "name", nil))
  120. log.info("mytable2删除结果", fskv.get("mytable2"), json.encode(fskv.get("mytable2")))
  121. --清空整个kv数据库
  122. log.info("清空整个kv数据库", fskv.clear())
  123. local used, total, kv_count = fskv.status()
  124. log.info("获取kv数据库状态", "fskv", "kv", used, total, kv_count)
  125. end
  126. sys.taskInit(fskv_test)