SetCommand.php 643 B

123456789101112131415161718192021222324252627282930
  1. <?php
  2. namespace Limen\Redisun\Commands;
  3. class SetCommand extends Command
  4. {
  5. public function getScript()
  6. {
  7. $luaSetTtl = $this->luaSetTtl($this->getTtl());
  8. $setTtl = $luaSetTtl ? '1' : '0';
  9. $checkScript = $this->existenceScript;
  10. $script = <<<LUA
  11. $checkScript
  12. local values = {};
  13. for i,v in ipairs(KEYS) do
  14. local ttl = redis.call('ttl', v);
  15. local setTtl = $setTtl;
  16. values[#values+1] = redis.call('set',v,ARGV[1]);
  17. if setTtl == 1 then
  18. $luaSetTtl
  19. elseif ttl >= 0 then
  20. redis.call('expire', v, ttl);
  21. end
  22. end
  23. return {KEYS,values};
  24. LUA;
  25. return $script;
  26. }
  27. }