Redis 事务

Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

  • 批量操作在发送 EXEC 命令前被放入队列缓存。
  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:

  • 监听命令 watch(key),不是必须的
  • 开始事务 multi(),开启事务
  • 命令入队,业务数据操作
  • 检测服务器 ping() ,检测服务器连接是否正常
  • 执行事务,exec(),执行事务

 

PHP 中 Redis 事务的应用

$redis = new redis(); // 创建redis对象
$redis -> connect('127.0.0.1',6379);// 连接redis 数据库

$redis -> watch('number'); // 监听key是number,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断,可以监视一个(或多个) key 
$redis -> multi();            // 开始事务块
$redis -> set('favorite_fruit','cherry');  //设置其他值
$redis -> incrBy('number',3);   // 更新监听的数据
$redis -> get('favorite_fruit');  // 获取值
$redis -> ping();  // 测试与服务器的连接是否仍然生效,或者用于测量延迟值,如果连接正常就返回一个 PONG ,否则返回一个连接错误。 不是事务必须的命令 
var_dump($redis -> exec());  // 执行事务
//array (size=4)
//  0 => boolean true
//  1 => int 3
//  2 => string 'cherry' (length=6)
//  3 => string '+PONG' (length=5)

$redis -> discard();  // 取消事务,取消 watch 命令对所有 key 的监视。
var_dump($redis -> exec());     // null

 

Redis 事务命令

posted @ 2020-06-16 14:18  柔和的天空  阅读(182)  评论(0编辑  收藏  举报