gpt4 book ai didi

lua - Redis Lua 脚本 redis.call ('get' , 'nonexisting' ) 返回值

转载 作者:IT王子 更新时间:2023-10-29 06:09:40 24 4
gpt4 key购买 nike

似乎以下 Redis Lua 脚本返回 false 而不是 nil,这与文档中所说的相矛盾:

> eval "local r = redis.call('get', 'none'); if r==nil then return 42 end" 0
(nil)
> eval "local r = redis.call('get', 'none'); if r==false then return 42 end" 0
(integer) 42
> eval "local r = redis.call('get', 'none'); if not r then return 42 end" 0
(integer) 42

第一个evalr==nil条件下失败,第二个eval似乎证明返回值为假的

似乎使用 not r 是我手头最安全的选择,但是文档 here表示 GET 命令将返回 nil

这是不是每个人都观察到并依赖的事实,即检查返回 nil 的命令的最安全的 Redis Lua 脚本是使用 not r

最佳答案

好的,在 documentation 中深入挖掘,Redis nil 在 Lua 脚本中确实转换为 false:

Redis to Lua conversion table.

  • Redis integer reply -> Lua number
  • Redis bulk reply -> Lua string
  • Redis multi bulk reply -> Lua table (may have other Redis data types nested)
  • Redis status reply -> Lua table with a single ok field containing the status
  • Redis error reply -> Lua table with a single err field containing the error
  • Redis Nil bulk reply and Nil multi bulk reply -> Lua false boolean type

关于lua - Redis Lua 脚本 redis.call ('get' , 'nonexisting' ) 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42123757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com