Ja, LUA script är den bästa lösningen i fallet med EVALSHA ring:
- Du arbetar med redis asynkron. Alltså
LUAhjälper dig att minska antalet kod och kodläsbarhet. LUAfallet är snabbare på grund av minskad nätverkskommunikation.
Jag tror att du kan skriva din kod med bara 2 kommandon. Du behöver inte exists i din kod.
local path = KEYS[1]
local resourcesPrefix = ARGV[1]
local collectionsPrefix = ARGV[2]
local ret
set ret = redis.call('get',resourcesPrefix..path)
if ret then
return ret
end
set ret = redis.call('smembers',collectionsPrefix..path)
if ret then
return ret
end
return "notFound"