菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
69
0

Laravel 中使用 lua 脚本 运行 Redis 命令

原创
05/13 14:22
阅读数 659

官方示例 继承 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));

发表评论

0/200
69 点赞
0 评论
收藏
为你推荐 换一批