Redis脚本采用 Lua 解释器来执行脚本

语法:EVAL script numkeys key [key ...] arg [arg ...]

Laravel 代码示例

/**
 * Redis Lua 脚本,对应的在这里的语法为:Redis::eval($script, $numkeys, $key [$key...], $arg [$arg...]);
 * $script 需要运行的脚本
 * $numkeys 指定键名的个数
 * $key 键名 从第三个参数开始为键名,有几个键名就依次数下去,在 Lua 中通过类似 KEYS[1],KEYS[2] 来获取
 * $arg 附加参数,在 Lua 脚本中通过类似 ARGV[1],ARGV[2] 来获取
 */
private function redisLuaEval() {
    $script1 = <<<SCRIPT
return redis.call('set', KEYS[1], ARGV[1])
SCRIPT;

	$key1 = 'shuxiaoyuan';
	$key2 = 'xiaoyuanshu';
	$a1 = Redis::eval($script1, 1, $key1, $key2);

	$script2 = <<<SCRIPT
return redis.call('SADD', KEYS[1], ARGV[1], ARGV[2],ARGV[3],ARGV[4])
SCRIPT;
	$key1 = 'eventID_2:user_name';
	$value1 = time() . mt_rand(1, 9999);
	$value2 = time() . mt_rand(1, 9999);
	$value3 = time() . mt_rand(1, 9999);
	$value4 = time() . mt_rand(1, 9999);
	$a2 = Redis::eval($script2, 1, $key1, $value1, $value2, $value3, $value4);
	dd($a1, $a2);
}