Multi 标记一个事务块的开始
- 事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行
-
multi redis命令
Multi
$return = \Illuminate\Support\Facades\Redis::connection('expired')->multi()
->set('key1', 'val1')
->get('key1')
->set('key2', 'val2')
->get('key2')
->exec();
// $return = [true, 'val1', true, 'val2']
Exec 执行所有事务块内的命令
# 参考 multi 代码
Watch 监视一个(或多个) key
- 如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断
-
watch redis命令
Watch
\Illuminate\Support\Facades\Redis::connection('expired')->watch('key1'); // 监听 key1
\Illuminate\Support\Facades\Redis::connection('expired')->watch('key2'); // 监听 key2
// \Illuminate\Support\Facades\Redis::connection('expired')->set('key1', 'val11xxx'); // 修改key1
$return = \Illuminate\Support\Facades\Redis::connection('expired')->multi()
->set('key1', 'val11')
->get('key1')
->set('key2', 'val22')
->get('key2')
->exec();
// 返回值 [true, 'val11', true, 'val22'] 如果在在执行事务之前修改监听key值 返回false
Unwatch 取消 WATCH 命令对所有 key 的监视
\Illuminate\Support\Facades\Redis::connection('expired')->watch('key1'); // 监听 key1
\Illuminate\Support\Facades\Redis::connection('expired')->watch('key2'); // 监听 key2
// \Illuminate\Support\Facades\Redis::connection('expired')->set('key1', 'val11xxx'); // 修改key1
\Illuminate\Support\Facades\Redis::connection('expired')->unWatch(); // 取消所有监听
$return = \Illuminate\Support\Facades\Redis::connection('expired')->multi()
->set('key1', 'val11')
->get('key1')
->set('key2', 'val22')
->get('key2')
->exec();
Discard 取消事务,放弃执行事务块内的所有命令
$return = \Illuminate\Support\Facades\Redis::connection('expired')->multi()
->set('key1', 'val11')
->get('key1')
->set('key2', 'val22')
->get('key2')
->discard(); // true
// 取消成功返回false
网友评论