Redis-Cli 运行lua脚本

我当前lua脚本在 /www/wwwroot/redis.lua 中

代码如下:

根据key获取一个值 , 当条件成立时产出这个key

 local key=KEYS[1]
local value=ARGV[1]


if(redis.call('get', key) == value)
then
    return redis.call('del', key)
end

如果在redis-cli中 是无法打开这个文件的

所以应该命令行中运行

redis-cli --eval /www/wwwroot/redis.lua  'swoft:lock1' , 's:9:"goods_id1";' 

注意的地方:

  • eval 后面参数是lua脚本文件,.lua后缀
  • 不用写numkeys,而是使用,隔开。注意,前后有空格。

我这个例子是swoft框架 , 值不一样

Redis-Cli 运行lua脚本_第1张图片

Redis-Cli 运行lua脚本_第2张图片

 

 public function redis()
    {
        $count = 0; // 重试次数
        $max_count = 3; // 最大重试次数
        $status = true;
        while ($status){
            $count++;
            if ($count > $max_count) $status=false;
            if ($status == false) return "您的网络不佳,稍后重试吧".$count.$status;
            $good_id = 1;
            $key = 'lock'.$good_id;
            $value = 'goods_id'.$good_id;
            $lock_status = Redis::exists($key);
            if (!$lock_status){
                $lock_time = 500;
                $lock = Redis::set($key, $value,$lock_time); // 设置锁并且设置过期时间
                if ($lock){ // 加锁成功
                    // TODO 业务操作
                   
                    // 业务执行后存在锁,删除锁
                    $script = <<

你可能感兴趣的:(php,Redis,php,redis,lua)