main.lua 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "fdbdemo"
  3. VERSION = "1.0.0"
  4. -- sys库是标配
  5. _G.sys = require("sys")
  6. sys.taskInit(function()
  7. sys.wait(1000) -- 免得日志刷了, 生产环境不需要
  8. -- 检查一下当前固件是否支持fdb
  9. if not fdb then
  10. while true do
  11. log.info("fdb", "this demo need fdb")
  12. sys.wait(1000)
  13. end
  14. end
  15. -- 初始化kv数据库
  16. fdb.kvdb_init("onchip_flash")
  17. log.info("fdb", "init complete")
  18. -- 先放入一堆值
  19. local bootime = fdb.kv_get("boottime")
  20. if bootime == nil or type(bootime) ~= "number" then
  21. bootime = 0
  22. else
  23. bootime = bootime + 1
  24. end
  25. fdb.kv_set("boottime", bootime)
  26. fdb.kv_set("my_bool", true)
  27. fdb.kv_set("my_int", 123)
  28. fdb.kv_set("my_number", 1.23)
  29. fdb.kv_set("my_str", "luatos")
  30. fdb.kv_set("my_table", {name="wendal",age=18})
  31. fdb.kv_set("my_str_int", "123")
  32. fdb.kv_set("1", "123") -- 单字节key
  33. --fdb.kv_set("my_nil", nil) -- 会提示失败,不支持空值
  34. log.info("fdb", "boottime", type(fdb.kv_get("boottime")), fdb.kv_get("boottime"))
  35. log.info("fdb", "my_bool", type(fdb.kv_get("my_bool")), fdb.kv_get("my_bool"))
  36. log.info("fdb", "my_int", type(fdb.kv_get("my_int")), fdb.kv_get("my_int"))
  37. log.info("fdb", "my_number", type(fdb.kv_get("my_number")), fdb.kv_get("my_number"))
  38. log.info("fdb", "my_str", type(fdb.kv_get("my_str")), fdb.kv_get("my_str"))
  39. log.info("fdb", "my_table", type(fdb.kv_get("my_table")), json.encode(fdb.kv_get("my_table")))
  40. log.info("fdb", "my_str_int", type(fdb.kv_get("my_str_int")), fdb.kv_get("my_str_int"))
  41. log.info("fdb", "1 byte key", type(fdb.kv_get("1")), json.encode(fdb.kv_get("1")))
  42. if fdb.sett then
  43. local ret = fdb.sett("mytable", "wendal", 123)
  44. log.info("ret", ret, json.encode(ret))
  45. ret = fdb.sett("mytable", "age", 18)
  46. log.info("ret", ret, json.encode(ret))
  47. ret = fdb.sett("mytable", "city", "guangzhou")
  48. log.info("ret", ret, json.encode(ret))
  49. ret = fdb.sett("mytable", "nickname", "wendal")
  50. log.info("ret", ret, json.encode(ret))
  51. log.info("fdb", "mytable", type(fdb.kv_get("mytable")), json.encode(fdb.kv_get("mytable")))
  52. end
  53. -- 删除测试
  54. fdb.kv_del("my_bool")
  55. local t = fdb.kv_get("my_bool")
  56. log.info("fdb", "my_bool", type(t), t)
  57. if fdb.kv_iter then
  58. local iter = fdb.kv_iter()
  59. if iter then
  60. while 1 do
  61. local k = fdb.kv_next(iter)
  62. if not k then
  63. log.info("fdb", "iter exit")
  64. break
  65. end
  66. log.info("fdb", k, "value", fdb.kv_get(k))
  67. end
  68. else
  69. log.info("fdb", "iter is null")
  70. end
  71. else
  72. log.info("fdb", "without iter")
  73. end
  74. -- 压力测试
  75. local start = mcu.ticks()
  76. local count = 1000
  77. while count > 0 do
  78. -- sys.wait(10)
  79. count = count - 1
  80. -- fdb.kv_set("BENT1", "--" .. os.date() .. "--")
  81. -- fdb.kv_set("BENT2", "--" .. os.date() .. "--")
  82. -- fdb.kv_set("BENT3", "--" .. os.date() .. "--")
  83. -- fdb.kv_set("BENT4", "--" .. os.date() .. "--")
  84. fdb.kv_get("my_bool")
  85. end
  86. log.info("fdb", (mcu.ticks() - start) / 1000)
  87. end)
  88. -- 用户代码已结束---------------------------------------------
  89. -- 结尾总是这一句
  90. sys.run()
  91. -- sys.run()之后后面不要加任何语句!!!!!