Это кажется следующий Redis Lua скрипт возвращает false
, а не nil
, который вступает в противоречие с тем, что говорится в документе:Redis Lua скрипт redis.call («получить», «несуществующая») Возвращаемое значение
> 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
в первый eval
не удалось в состоянии r==nil
, то второй eval
, кажется, доказывает, что возвращаемое значение false
кажется, используя not r
самый безопасный вариант, у меня есть под рукой, но документация here говорит, что GET
Команда возвращает nil
Это то, что все остальные наблюдали и опираясь на как факт, что проверка самый безопасный Redis Lua скрипт для команд, вернувшихся nil
является использование not r
?
Хм ... Какая-то nilophobia в Redis? –