Alla dina frågor besvaras på EVAL sida, men eftersom du frågade...:
Vad är skillnaden?
KEYS används för att skicka nyckelnamn medan ARGS borde vara för något annat. Detta är inte exakt genomdrivet (dvs. de flesta gånger skulle du vara okej att blanda dem) men kan leda till potentiella problem om det inte följs.
Hur behandlar Redis värden i KEYS-matrisen?
Innehållet i KEYS kontrolleras för att verifiera att alla nycklar är tillgängliga för Redis-biten som kör skriptet. Denna mekanism är på plats för att tillåta körning av skript i en Redis-klusterdistribution.
Vad händer om jag i mitt skript måste använda nycklar som genereras dynamiskt vid körning?
Se tidigare svar - det är möjligt men du skulle gå emot rekommendationerna. Ditt skript kommer att vara säkert att köra endast på en fristående Redis-instans och eftersom detta beteende inte är specificerat kan det gå sönder i framtida utgåvor.