Laravel 中使用 lua 脚本 运行 Redis 命令
官方示例 继承 ScriptCommand 重写 getScript方法即可
class IncrementExistingKeysBy extends ScriptCommand
{
public function getKeysCount()
{ // Tell Predis to use all the arguments but the last one as arguments
// for KEYS. The last one will be used to populate ARGV.\ return -1;
}
public function getScript()
{
return <<<LUA
local cmd, insert = redis.call, table.insert
local increment, results = ARGV[1], { }
for idx, key in ipairs(KEYS)
if cmd('exists', key) == 1 then
insert(results, idx, cmd('incrby', key, increment))
else
insert(results, idx, false) end
end
return results
LUA;
}
}
调用方式
$client = new Predis\Client($single_server, array(
'profile' => function ($options) {
$profile = $options->getDefault('profile');
$profile->defineCommand('increxby', 'IncrementExistingKeysBy');
return $profile;
},
));
$client->mset('foo', 10, 'foobar', 100);
var_export($client->increxby('foo', 'foofoo', 'foobar', 50));
本作品采用《CC 协议》,转载必须注明作者和本文链接